teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

7

修正

2020/08/31 00:17

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -3,14 +3,10 @@
3
3
  a.set_ticklabels([])
4
4
  a._axinfo['grid']['linewidth'] = 0
5
5
  a._axinfo['tick']['linewidth'] = 0
6
-
7
- for a in [ax.w_xaxis, ax.w_yaxis, ax.w_zaxis]:
8
- a.line.set_linewidth(0)
9
- a.set_pane_color((0., 0., 0., 0.))
10
- #順にRGBA
11
6
  ```
12
7
 
8
+ 上がエラーの原因です。
13
- 名前が `_` から始まっている属性、関数というのは外部に公開されていないものなので、バージョン変更で変わってしまった可能性がありますね。
9
+ 名前が `_` から始まっている属性、関数というのは外部に公開されていない (ユーザーが使うことが想定されていない) ものなので、バージョン変更で変わってしまった可能性がありますね。
14
10
  この処理は目盛りの軸を消す処理だと思いますが、`ax.set_axis_off()` で同じことができます。
15
11
 
16
12
  ## サンプルコード

6

修正

2020/08/31 00:17

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -28,7 +28,7 @@
28
28
 
29
29
 
30
30
  def draw(event):
31
- fig = plt.figure(figsize=(6, 6))
31
+ fig = plt.figure(figsize=(4, 4))
32
32
 
33
33
  ax = fig.gca(projection="3d", facecolor="k")
34
34
  ax.set_xlim([-1.0, 1.0])

5

修正

2020/08/31 00:14

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -34,7 +34,7 @@
34
34
  ax.set_xlim([-1.0, 1.0])
35
35
  ax.set_ylim([-1.0, 1.0])
36
36
  ax.set_zlim([-1.0, 1.0])
37
- ax.set_axis_off() # 軸を消す
37
+ ax.set_axis_off()
38
38
 
39
39
  u, v = np.mgrid[0 : 2 * np.pi : 50j, 0 : np.pi : 25j]
40
40
  x = np.cos(u) * np.sin(v)
@@ -43,7 +43,7 @@
43
43
 
44
44
  # (50, 25, 3) の色の配列を作成する。
45
45
  colors = np.zeros((50, 25, 3))
46
- colors[:25] = np.random.rand(3) # 半分の色を変更する
46
+ colors[:25, :] = np.random.rand(3)
47
47
 
48
48
  ax.plot_surface(x, y, z, facecolors=colors, shade=False)
49
49
 

4

修正

2020/08/31 00:07

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -34,7 +34,7 @@
34
34
  ax.set_xlim([-1.0, 1.0])
35
35
  ax.set_ylim([-1.0, 1.0])
36
36
  ax.set_zlim([-1.0, 1.0])
37
- ax.set_axis_off()
37
+ ax.set_axis_off() # 軸を消す
38
38
 
39
39
  u, v = np.mgrid[0 : 2 * np.pi : 50j, 0 : np.pi : 25j]
40
40
  x = np.cos(u) * np.sin(v)
@@ -43,7 +43,7 @@
43
43
 
44
44
  # (50, 25, 3) の色の配列を作成する。
45
45
  colors = np.zeros((50, 25, 3))
46
- colors[:25, :] = np.random.rand(3)
46
+ colors[:25] = np.random.rand(3) # 半分の色を変更する
47
47
 
48
48
  ax.plot_surface(x, y, z, facecolors=colors, shade=False)
49
49
 

3

修正

2020/08/31 00:05

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -13,6 +13,8 @@
13
13
  名前が `_` から始まっている属性、関数というのは外部に公開されていないものなので、バージョン変更で変わってしまった可能性がありますね。
14
14
  この処理は目盛りの軸を消す処理だと思いますが、`ax.set_axis_off()` で同じことができます。
15
15
 
16
+ ## サンプルコード
17
+
16
18
  以下のコードで tkinter ありで動作しました。
17
19
 
18
20
  ```python

2

修正

2020/08/31 00:03

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -1,6 +1,20 @@
1
+ ```
1
- tkinter 関連のコードを削除して以下のコードでこちらの環境ではエラーが発生しませんでした。
2
+ for a in [ax.xaxis, ax.yaxis, ax.zaxis]:
2
- matplotlib のバージョン: 3.2.2
3
+ a.set_ticklabels([])
4
+ a._axinfo['grid']['linewidth'] = 0
5
+ a._axinfo['tick']['linewidth'] = 0
3
6
 
7
+ for a in [ax.w_xaxis, ax.w_yaxis, ax.w_zaxis]:
8
+ a.line.set_linewidth(0)
9
+ a.set_pane_color((0., 0., 0., 0.))
10
+ #順にRGBA
11
+ ```
12
+
13
+ 名前が `_` から始まっている属性、関数というのは外部に公開されていないものなので、バージョン変更で変わってしまった可能性がありますね。
14
+ この処理は目盛りの軸を消す処理だと思いますが、`ax.set_axis_off()` で同じことができます。
15
+
16
+ 以下のコードで tkinter ありで動作しました。
17
+
4
18
  ```python
5
19
  import numpy as np
6
20
  from matplotlib import colors as mcolors
@@ -8,50 +22,41 @@
8
22
  from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk
9
23
  from matplotlib.figure import Figure
10
24
  from mpl_toolkits.mplot3d import Axes3D
11
- import random
25
+ import tkinter
12
26
 
13
- fig = plt.figure(figsize=(4, 4))
14
- ax = fig.gca(projection="3d")
15
27
 
28
+ def draw(event):
16
- ax.set_xlim([-1.0, 1.0])
29
+ fig = plt.figure(figsize=(6, 6))
17
- ax.set_ylim([-1.0, 1.0])
18
- ax.set_zlim([-1.0, 1.0])
19
30
 
20
- for a in [ax.xaxis, ax.yaxis, ax.zaxis]:
21
- a.set_ticklabels([])
22
- a._axinfo["grid"]["linewidth"] = 0
23
- a._axinfo["tick"]["linewidth"] = 0
31
+ ax = fig.gca(projection="3d", facecolor="k")
32
+ ax.set_xlim([-1.0, 1.0])
33
+ ax.set_ylim([-1.0, 1.0])
34
+ ax.set_zlim([-1.0, 1.0])
35
+ ax.set_axis_off()
24
36
 
25
- for a in [ax.w_xaxis, ax.w_yaxis, ax.w_zaxis]:
37
+ u, v = np.mgrid[0 : 2 * np.pi : 50j, 0 : np.pi : 25j]
26
- a.line.set_linewidth(0)
38
+ x = np.cos(u) * np.sin(v)
27
- a.set_pane_color((0.0, 0.0, 0.0, 0.0))
39
+ y = np.sin(u) * np.sin(v)
28
- # 順にRGBA
40
+ z = np.cos(v)
29
41
 
42
+ # (50, 25, 3) の色の配列を作成する。
30
- ax.set_facecolor("black")
43
+ colors = np.zeros((50, 25, 3))
44
+ colors[:25, :] = np.random.rand(3)
31
45
 
32
- u, v = np.mgrid[0 : 2 * np.pi : 50j, 0 : np.pi : 25j]
46
+ ax.plot_surface(x, y, z, facecolors=colors, shade=False)
33
47
 
34
- x = np.cos(u) * np.sin(v)
35
- y = np.sin(u) * np.sin(v)
48
+ azim = np.random.randint(-90, 270)
36
- z = np.cos(v)
49
+ ax.view_init(elev=0, azim=azim)
37
50
 
38
- a = random.random()
51
+ canvas = FigureCanvasTkAgg(fig, master=root)
39
- b = random.random()
40
- c = random.random()
52
+ canvas.get_tk_widget().place(x=0,y=0)
41
53
 
42
- colors = np.zeros((50, 25, 3))
43
- for i in range(0, 25):
54
+ root = tkinter.Tk()
44
- for j in range(0, 25):
55
+ root.geometry("800x600")
45
- colors[i][j][0] = a
46
- colors[i][j][1] = b
47
- colors[i][j][2] = c
48
56
 
49
- ax.plot_surface(x, y, z, facecolors=colors, shade=False)
57
+ button= tkinter.Button(root, text=u'ボタン',width=15)
58
+ button.bind("<Button-1>",draw)
59
+ button.place(x=300,y=450)
50
60
 
51
- moon = random.randint(-90, 270)
52
-
53
-
54
- ax.view_init(elev=0, azim=moon)
55
-
56
- plt.show()
61
+ tkinter.mainloop()
57
62
  ```

1

修正

2020/08/30 23:59

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -1,4 +1,4 @@
1
- 以下のコードでこちらの環境では発生しませんでした。
1
+ tkinter 関連のコードを削除して以下のコードでこちらの環境ではエラーが発生しませんでした。
2
2
  matplotlib のバージョン: 3.2.2
3
3
 
4
4
  ```python
@@ -52,4 +52,6 @@
52
52
 
53
53
 
54
54
  ax.view_init(elev=0, azim=moon)
55
+
56
+ plt.show()
55
57
  ```