4

Pythonの3D散布図にプロットしたい、4次元データ(x、y、z変位、およびそれぞれの電圧)があります。レンダリングする3Dプロットを取得しましたが、ポイントの電圧の大きさに応じて、カラーマップを使用してポイントの色を変更したいと思います。

いくつか試しましたが、うまくいかないようです。エラーが発生しますValueError: Cannot convert argument type <type 'numpy.ndarray'> to rgba array。変換する必要があるものを正確に変換する方法がわからないので、誰かが助けを提供してくれるなら、私は最も感謝するでしょう。

私のコードはここにあります:

fig = plt.figure()
from mpl_toolkits.mplot3d import Axes3D
cmhot = plt.cm.get_cmap("hot")
ax = fig.add_subplot(111, projection='3d',)
ax.scatter(x, y, z, v, s=50, c = cmhot)
plt.show()
4

1 に答える 1

7

ax.scatterは、スカラーcのシーケンス ( alistまたは an など) である色パラメーターと、カラー マップを指定するパラメーターを取ることができます。したがって、電圧の大きさに応じて色を変化させるには、次のように定義できます。arraycmap

c = np.abs(v)

これにより、正と負の電圧が同じ色になります。代わりに、各色 (正または負) に独自の色を持たせたい場合は、単に を使用できますc = v


例えば、

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
x, y, z, v = (np.random.random((4,100))-0.5)*15
c = np.abs(v)

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
cmhot = plt.get_cmap("hot")
cax = ax.scatter(x, y, z, v, s=50, c=c, cmap=cmhot)

plt.show()

ここに画像の説明を入力

于 2013-02-24T16:08:49.820 に答える