前提・実現したいこと
先週までは以下記載の内容のプログラムを動かすことができたのですが、本日実行してみるとプログラムを急に動かせなくなっておりました。
心当たりは、matplotlibをアップデートしたことなのですが、それ以外は何もしておらず、プログラムの内容を変更したりはしておりません…
何が原因なのでしょうか?
エラーはTypeError: 'int' object is not subscriptable という内容です。エラー回避・解消法がご存じの方教えて頂きたいです。
足りない情報等ありましたら追記いたします。よろしくお願いします。
発生している問題・エラーメッセージ
Exception in Tkinter callback Traceback (most recent call last): File "c:\…\lib\tkinter\__init__.py", line 1883, in __call__ return self.func(*args) File "c:\…\lib\tkinter\__init__.py", line 804, in callit func(*args) File "c:\…\lib\site-packages\matplotlib\backends\_backend_tk.py", line 253, in idle_draw self.draw() File "c:\…\lib\site-packages\matplotlib\backends\backend_tkagg.py", line 9, in draw super(FigureCanvasTkAgg, self).draw() File "c:\…\lib\site-packages\matplotlib\backends\backend_agg.py", line 407, in draw self.figure.draw(self.renderer) File "c:\…\lib\site-packages\matplotlib\artist.py", line 41, in draw_wrapper return draw(artist, renderer, *args, **kwargs) File "c:\…\lib\site-packages\matplotlib\figure.py", line 1863, in draw mimage._draw_list_compositing_images( File "c:\…\lib\site-packages\matplotlib\image.py", line 131, in _draw_list_compositing_images a.draw(renderer) File "c:\…\lib\site-packages\matplotlib\artist.py", line 41, in draw_wrapper return draw(artist, renderer, *args, **kwargs) File "c:\…\lib\site-packages\mpl_toolkits\mplot3d\axes3d.py", line 461, in draw axis.draw(renderer) File "c:\…\lib\site-packages\matplotlib\artist.py", line 41, in draw_wrapper return draw(artist, renderer, *args, **kwargs) File "c:\…\lib\site-packages\mpl_toolkits\mplot3d\axis3d.py", line 396, in draw info['tick']['linewidth'][tick._major]) TypeError: 'int' object is not subscriptable
該当のソースコード
python
1import matplotlib.pyplot as plt 2from mpl_toolkits.mplot3d import Axes3D 3from matplotlib.backends.backend_tkagg import (FigureCanvasTkAgg, NavigationToolbar2Tk) 4from matplotlib.figure import Figure 5import matplotlib.colors as mcolors 6 7 8def draw(event): 9 fig = plt.figure(figsize=(4,4)) 10 ax=fig.gca(projection='3d') 11 12 ax.set_xlim([-1., 1.]) 13 ax.set_ylim([-1., 1.]) 14 ax.set_zlim([-1., 1.]) 15 16 for a in [ax.xaxis, ax.yaxis, ax.zaxis]: 17 a.set_ticklabels([]) 18 a._axinfo['grid']['linewidth'] = 0 19 a._axinfo['tick']['linewidth'] = 0 20 21 for a in [ax.w_xaxis, ax.w_yaxis, ax.w_zaxis]: 22 a.line.set_linewidth(0) 23 a.set_pane_color((0., 0., 0., 0.)) 24 #順にRGBA 25 26 ax.set_facecolor('black') 27 28 u, v = np.mgrid[0:2*np.pi:50j, 0:np.pi:25j] 29 30 x = np.cos(u) * np.sin(v) 31 y = np.sin(u) * np.sin(v) 32 z = np.cos(v) 33 34 a=random.random() 35 b=random.random() 36 c=random.random() 37 38 colors = np.zeros((50, 25, 3)) 39 for i in range(0, 25): 40 for j in range(0, 25): 41 colors[i][j][0] = a 42 colors[i][j][1] = b 43 colors[i][j][2] = c 44 45 #colors2=mcolors.rgb_to_hsv(mcolors.to_rgb(colors)) 46 47 ax.plot_surface(x, y, z, facecolors = colors, shade = False) 48 49 moon=random.randint(-90,270) 50 51 52 ax.view_init(elev = 0, azim = moon) 53 54 canvas = FigureCanvasTkAgg(fig, master=root) 55 canvas.get_tk_widget().place(x=0,y=0) 56 57root = tkinter.Tk() 58root.geometry("800x600") 59 60button= tkinter.Button(root, text=u'ボタン',width=15) 61button.bind("<Button-1>",draw) 62button.place(x=300,y=450) 63 64tkinter.mainloop()
試したこと
matplotlibのアップデートが原因かと思い,以前のバージョンのものをインストールしなおしたのですが、それが原因ではありませんでした。
補足情報(FW/ツールのバージョンなど)
python 3
matplot 0.1.9
matplotlib 3.3.1
回答2件
あなたの回答
tips
プレビュー