次のコードは、ポリゴンの例hereに適合しています。matplotlibにPatchCollectionを追加するときのTkinterコールバックのTypeError Axes3D
import matplotlib.pyplot as plt
import matplotlib.patches as patches
from matplotlib.collections import PolyCollection, PatchCollection
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import colors as mcolors
plt.ion()
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1, projection='3d')
def cc(arg):
return mcolors.to_rgba(arg, alpha=.6)
zs = range(4)
patch_list = []
for z in zs:
patch = patches.Rectangle((0, 0), 10, 10, color=cc('r'))
patch_list.append(patch)
patch_collection = PatchCollection(patch_list, match_original=True)
ax.add_collection3d(patch_collection, zs=zs, zdir='y')
ax.set_xlim3d(0, 10)
ax.set_ylim3d(-1, 4)
ax.set_zlim3d(0, 10)
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
それはPolyCollectionのためにうまく働いたが、私はPatchCollectionに切り替えたとき、私は、次のエラーを取得開始しました:それはバックエンドに関係しているよう
Exception in Tkinter callback Traceback (most recent call last):
File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1540, in __call__
return self.func(*args)
File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 590, in callit
func(*args)
File "/home/csquires/.local/lib/python2.7/site-packages/matplotlib/backends/backend_tkagg.py", line 370, in idle_draw
self.draw()
File "/home/csquires/.local/lib/python2.7/site-packages/matplotlib/backends/backend_tkagg.py", line 351, in draw
FigureCanvasAgg.draw(self)
File "/home/csquires/.local/lib/python2.7/site-packages/matplotlib/backends/backend_agg.py", line 464, in draw
self.figure.draw(self.renderer)
File "/home/csquires/.local/lib/python2.7/site-packages/matplotlib/artist.py", line 63, in draw_wrapper
draw(artist, renderer, *args, **kwargs)
File "/home/csquires/.local/lib/python2.7/site-packages/matplotlib/figure.py", line 1144, in draw
renderer, self, dsu, self.suppressComposite)
File "/home/csquires/.local/lib/python2.7/site-packages/matplotlib/image.py", line 139, in _draw_list_compositing_images
a.draw(renderer)
File "/home/csquires/.local/lib/python2.7/site-packages/mpl_toolkits/mplot3d/axes3d.py", line 271, in draw
for col in self.collections]
File "/home/csquires/.local/lib/python2.7/site-packages/mpl_toolkits/mplot3d/art3d.py", line 387, in do_3d_projection
vxs, vys, vzs, vis = proj3d.proj_transform_clip(xs, ys, zs, renderer.M)
File "/home/csquires/.local/lib/python2.7/site-packages/mpl_toolkits/mplot3d/proj3d.py", line 207, in proj_transform_clip
return proj_transform_vec_clip(vec, M)
File "/home/csquires/.local/lib/python2.7/site-packages/mpl_toolkits/mplot3d/proj3d.py", line 164, in proj_transform_vec_clip
vecw = np.dot(M, vec) TypeError: can't multiply
sequence by non-int of type 'float'
が見える - どのように上の任意の提言を代わりに使用しますか?
、今は接続されていない浮動四角形を取得しています(つまり、私がプロットを回転させると、同じ場所にとどまります) –