前提
matplotlib、quiverを用いて3次元座標内でベクトルを描画しています。
実現したいこと
・ベクトルの長さに応じてカラーバーの色を付けたい
・カラーバーも隣に表示したい
発生している問題・エラーメッセージ
ValueError: Invalid RGBA argument: 56.8
該当のソースコード
python
1import numpy as np 2import matplotlib.pyplot as plt 3 4##移動前座標 5x1=[595,280,470] 6y1=[415,350,326] 7z1=[286,418,419] 8 9##移動ベクトル 10x2=[9,12,12] 11y2=[3,2,3] 12z2=[56,59,57] 13 14##移動量 15d=(56.8,60.2,58.3) 16 17 18cm=plt.cm.get_cmap('bwr') 19fig=plt.figure() 20 21##軸設定 22ax=fig.add_subplot(1,1,1,projection='3d') 23ax.set_xlabel("x",size=14) 24ax.set_ylabel("y",size=14) 25ax.set_zlabel("z",size=14) 26ax.set_xlim(250,750) 27ax.set_ylim(250,750) 28ax.set_zlim(100,600) 29ax.invert_zaxis() 30 31im=plt.quiver(x1,y1,z1,x2,y2,z2,color=d,cmap=cm) 32fig.colorbar(im,ax=ax,pad=0.2,label="vector length (pixel)") 33im.set_clim(54,61) 34plt.show()
試したこと
・色を指定した3Dベクトルは描画できた
・3D散布図に対してカラーバーから色を付けるのは成功している
・データの最大値・最小値の範囲をカラーバーに設定し、該当データのカラーバー内のRGB値を算出して代入するようなコードを書こうとしたがうまくいかなかった
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。

下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。
2022/11/28 09:25
2022/11/29 02:38
2023/05/31 06:02