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

質問編集履歴

1

「追記」を追加しました

2020/08/30 12:00

投稿

astromelt0416
astromelt0416

スコア15

title CHANGED
File without changes
body CHANGED
@@ -62,4 +62,47 @@
62
62
  ### 調べたこと
63
63
 
64
64
  2次元のベクトル場に対しては、[matplotlib.axes.Axes.quiver](https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.quiver.html)
65
- にもありますように、quiver(X, Y, U, V, [C])と引数Cを取ればいいとのことですが、3次元ではどのようにすればいいかわからない状態です。私の調査不足かもしれませんが、ご存知の方がいれば教えていただきたいです。
65
+ にもありますように、quiver(X, Y, U, V, [C])と引数Cを取ればいいとのことですが、3次元ではどのようにすればいいかわからない状態です。私の調査不足かもしれませんが、ご存知の方がいれば教えていただきたいです。
66
+
67
+ ###追記
68
+ can110様、回答ありがとうございます。
69
+ 以下のようにカラーマップを導入してみました。
70
+ ```python
71
+ import matplotlib
72
+ import matplotlib.pyplot as plt
73
+ import numpy as np
74
+ from mpl_toolkits.mplot3d import axes3d
75
+
76
+ plt.style.use('ggplot')
77
+ plt.rcParams["axes.facecolor"] = 'white'
78
+ fig = plt.figure()
79
+ ax = fig.gca(projection='3d')
80
+ cm = matplotlib.cm.seismic
81
+
82
+ x = []
83
+ y = []
84
+ z = []
85
+ u = []
86
+ v = []
87
+ w = []
88
+
89
+ f = open('test.d')
90
+ for line in f:
91
+ data = line.split()
92
+ x.append(float(data[0]))
93
+ y.append(float(data[1]))
94
+ z.append(float(data[2]))
95
+ #プロットの都合でサイズを調節 /2.5
96
+ u.append(float(data[3])/2.5)
97
+ v.append(float(data[4])/2.5)
98
+ w.append(float(data[5])/2.5)
99
+ f.close()
100
+
101
+ ax.set(xlabel='x',ylabel='y',zlabel='z')
102
+ ax.quiver(x, y, z, u, v, w, color=cm(0.5*np.array(w)+0.5)
103
+ plt.savefig('test.png' , dpi = 120)
104
+ plt.show()
105
+ ```
106
+
107
+ この結果以下のような図が得られました。
108
+ ![test.png](b3d1072312ee821bc1266670381a5eeb.png)