質問編集履歴

1

「追記」を追加しました

2020/08/30 12:00

投稿

astromelt0416
astromelt0416

スコア15

test CHANGED
File without changes
test CHANGED
@@ -127,3 +127,89 @@
127
127
  2次元のベクトル場に対しては、[matplotlib.axes.Axes.quiver](https://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.quiver.html)
128
128
 
129
129
  にもありますように、quiver(X, Y, U, V, [C])と引数Cを取ればいいとのことですが、3次元ではどのようにすればいいかわからない状態です。私の調査不足かもしれませんが、ご存知の方がいれば教えていただきたいです。
130
+
131
+
132
+
133
+ ###追記
134
+
135
+ can110様、回答ありがとうございます。
136
+
137
+ 以下のようにカラーマップを導入してみました。
138
+
139
+ ```python
140
+
141
+ import matplotlib
142
+
143
+ import matplotlib.pyplot as plt
144
+
145
+ import numpy as np
146
+
147
+ from mpl_toolkits.mplot3d import axes3d
148
+
149
+
150
+
151
+ plt.style.use('ggplot')
152
+
153
+ plt.rcParams["axes.facecolor"] = 'white'
154
+
155
+ fig = plt.figure()
156
+
157
+ ax = fig.gca(projection='3d')
158
+
159
+ cm = matplotlib.cm.seismic
160
+
161
+
162
+
163
+ x = []
164
+
165
+ y = []
166
+
167
+ z = []
168
+
169
+ u = []
170
+
171
+ v = []
172
+
173
+ w = []
174
+
175
+
176
+
177
+ f = open('test.d')
178
+
179
+ for line in f:
180
+
181
+ data = line.split()
182
+
183
+ x.append(float(data[0]))
184
+
185
+ y.append(float(data[1]))
186
+
187
+ z.append(float(data[2]))
188
+
189
+ #プロットの都合でサイズを調節 /2.5
190
+
191
+ u.append(float(data[3])/2.5)
192
+
193
+ v.append(float(data[4])/2.5)
194
+
195
+ w.append(float(data[5])/2.5)
196
+
197
+ f.close()
198
+
199
+
200
+
201
+ ax.set(xlabel='x',ylabel='y',zlabel='z')
202
+
203
+ ax.quiver(x, y, z, u, v, w, color=cm(0.5*np.array(w)+0.5)
204
+
205
+ plt.savefig('test.png' , dpi = 120)
206
+
207
+ plt.show()
208
+
209
+ ```
210
+
211
+
212
+
213
+ この結果以下のような図が得られました。
214
+
215
+ ![test.png](b3d1072312ee821bc1266670381a5eeb.png)