1

電圧の大きさに応じたカラーマップを使用して、4次元データ(xyz座標と電圧)を3D散布図にプロットしようとしたプログラムについて以前に投稿しました。

データポイントは常に青色で表示され、カラーマップが適切に適用されていないことを示していますが、エラーなしでプログラムを実行できます(パッケージが不足していないことを示しています)。誰かが問題が何であるかを見ることができますか?もしそうなら、私は最も感謝しています。

from pylab import *
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

x = array([-4,-4,   -4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,0,0,0,0,0,0,0,0,0,0,  0,0,0,0,0,0,4,4,    4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, 2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  -5, -4.5,   -4, -3.5,   -3, -2.5,   -2, -1.5,   -1, -0.5,   0,  0.5,    1,  1.5,    2,  2.5,    3,  3.5,    4,  4.5,    5,  5.5,    6,  6.5,    -6.5,   -6, -5.5,
    ])
y = array([-0.1,    3.95,   5.8,4.4,0.1,-4,-5.8,-4,1,2.4,3.2,   1.6,-0.8,-2.6,-3.3,-1.4,-0.1,3.95,  5.8,4.4,0.1,-4,-5.8,-4,1,2.4,   3.2,    1.6,    -0.8,   -2.6,   -3.3,   -1.4,   -0.1,   3.95,   5.8,    4.4,    0.1,    -4, -5.8,   -4, 1,  2.4,    3.2,    1.6,    -0.8,   -2.6,   -3.3,   -1.4,   -0.1,   3.95,   5.8,    4.4,    0.1,    -4, -5.8,   -4, 1,  2.4,    3.2,    1.6,    -0.8,   -2.6,   -3.3,   -1.4,   -0.1,   3.95,   5.8,    4.4,    0.1,    -4, -5.8,   -4, 1,  2.4,    3.2,    1.6,    -0.8,   -2.6,   -3.3,   -1.4,   0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    ])
z = array([5.85,    4, 0.2,-3.8,-5.85,-4.1,-0.15,4,2.75,1.4,-0.3,   -2.6,   -2.75,-2.7, 1.2,    3.2,5.85,4, 0.2,-3.8,-5.85,-4.1,-0.15,  4,  2.75,   1.4,    -0.3,   -2.6,   -2.75,  -2.7,   1.2,    3.2,    5.85,   4,  0.2,    -3.8,   -5.85,  -4.1,   -0.15,  4,  2.75,   1.4,    -0.3,   -2.6,   -2.75,  -2.7,   1.2,    3.2,    5.85,   4,  0.2,    -3.8,   -5.85,  -4.1,   -0.15,  4,  2.75,   1.4,    -0.3,   -2.6,   -2.75,  -2.7,   1.2,    3.2,    5.85,   4,  0.2,    -3.8,   -5.85,  -4.1,   -0.15,  4,  2.75,   1.4,    -0.3,   -2.6,   -2.75,  -2.7,   1.2,    3.2,    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
    ])
v = array([0.29,    0.32,   0.3,    0.27,   0.3,    0.28,   0.31,   0.28,   0.19,   0.18,   0.19,   0.18,   0.19,   0.19,   0.2,    0.19,   0.12,   0.12,   0.11,   0.1,    0.11,   0.15,   0.14,   0.13,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.32,   0.31,   0.3,    0.31,   0.29,   0.3,    0.32,   0.31,   0.2,    0.21,   0.19,   0.19,   0.19,   0.19,   0.19,   0.2,    0.13,   0.12,   0.14,   0.14,   0.17,   0.17,   0.16,   0.14,   0.18,   0.18,   0.18,   0.19,   0.19,   0.19,   0.19,   0.18,   0.16,   0.18,   0.2,    0.19,   0.18,   0.15,   0.16,   0.18,   0.18,   0.18,   0.18,   0.17,   0.17,   0.17,   0.18,   0.18,   0.13,   0.14,   0.15,   0.16,   0.17,   0.17,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.18,   0.17,   0.17,   0.16,   0.15,   0.14,   0.12,   0.08,   0.09,   0.11,   0.09,   0.1,    0.11,
    ])

c = 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()

私のためにこれを見るのに十分親切な人に前もって感謝します。

4

1 に答える 1

2
from pylab import *
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

th = np.linspace(0, 2 * pi, 100)
x = cos(th)
y = sin(th)
z = th
v = cos(th) * sin(th)
c = 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()

プロデュースサンプル画像

このMatplotlib 3D scatter color lost after redrawを参照してください。これは、バージョン 1.1.0 から同じことを報告しています (回避策があります)。これは、後のバージョンで修正された mpl の古いバグです (PR here )

于 2013-02-25T17:42:06.583 に答える