質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

1回答

3585閲覧

python3Dベクトルマップの色

junsuke16

総合スコア14

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

1クリップ

投稿2020/02/07 09:22

pythonの3次元ベクトルマップの各ベクトルの色をベクトルの長さに応じて、色をグラデーションでつけたいです。(cmapの"Spectral"などの色で。)
どのようにすればよろしいでしょうか。困っています。

現状のコードは下記の通りになります。
Xcoor,Ycoor,Zcoorがぷろっとする座標であり、Fx,Fy,Fzがプロットするベクトルの各座標成分になります。
#############################################################
from mpl_toolkits.mplot3d import axes3d
Gxy=510**13
Gz=5
1011
L_vector=np.sqrt(GxyFx[:,0]**2+GxyFy[:,0]2+GzFz[:,0]**2)
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.quiver(Xcoor
10
9,Ycoor*10
9,Zcorr,GxyFx[:,0],GxyFy[:,0],GzFz[:,0],arrow_length_ratio=0.0, pivot='tip',colors="r")# #
plt.xlim([np.min(Xcoor
109),np.max(Xcoor*109)])
plt.ylim([np.min(Ycoor10**9),np.max(Ycoor10**9)])
ax.set_zlim([0, 5])
plt.show()

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tiitoi

2020/02/07 09:37 編集

質問欄コードは ``` コード ``` のように markdwon 記法を使ってください。 また、コードは一部ではなく、コピペすれば動かせる状態のものを記述してください
guest

回答1

0

そのように使うためのハードルは高いです。

  • matplotlib.cmの機能を把握して、自分で数値と色のデータ(RGBA形式)への変換を行うこと
  • quiverの実装を知っていること

まず以下のページの議論を参照してみてください。

python - Adding colors to a 3d quiver plot in matplotlib - Stack Overflow

コードとしては以下のように書けば動きます(@matplotlib 3.0.3。将来のバージョンに渡って動作することは保証できません)。

python

1import numpy as np 2import matplotlib.pyplot as plt 3from matplotlib import cm 4from mpl_toolkits.mplot3d import axes3d 5 6np.random.seed(42) 7data = np.random.normal(size=(10, 6)) 8 9fig = plt.figure() 10ax = fig.gca(projection='3d') 11 12# 各ベクトルの長さを計算する 13L = np.linalg.norm(data[:,3:6] - data[:,0:3], axis=1) 14 15# 色のデータを作る 16cmap = cm.ScalarMappable(cmap=cm.Spectral) 17colors = cmap.to_rgba(L) 18## おまじないっぽいこと(後ろの項がないとうまくいかない。SO参照) 19colors = list(colors) + [x for x in colors for _ in range(2)] 20 21# LineCollectionのcolors引数として指定 22ax.quiver(data[:,0], data[:,1], data[:,2], 23 data[:,3], data[:,4], data[:,5], 24 colors=colors) 25 26plt.savefig("result.png") 27

イメージ説明

投稿2020/02/07 21:30

hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問