1

同じ長さとy の値を持つ 2 つのリストtab_x (x の値を含む) とtab_z (z の値を含む) があります。

z の値で色付けされた 3D 曲線をプロットしたいと思います。2Dプロットとしてプロットできることはわかっていますが、これらのプロットのいくつかをyの異なる値でプロットして比較したいので、3Dにする必要があります。

私のtab_zには負の値も含まれています

この質問で時間 (インデックス) で曲線を色付けするコードを見つけましたが、このコードを変換して私の場合に機能させる方法がわかりません。

助けてくれてありがとう。

より具体的にするためにコードを追加します。

fig8 = plt.figure()
ax8 = fig8.gca(projection = '3d')
tab_y=[]
for i in range (0,len(tab_x)):
  tab_y.append(y)
ax8.plot(tab_x, tab_y, tab_z)

とりあえずこれ持ってる

ここに画像の説明を入力

私はこのコードを試しました

for i in range (0,len(tab_t)):
    ax8.plot(tab_x[i:i+2], tab_y[i:i+2], tab_z[i:i+2],color=plt.cm.rainbow(255*tab_z[i]/max(tab_z)))

完全な失敗:

ここに画像の説明を入力

4

1 に答える 1

5

2 回目の試行でほぼ完了です。唯一の変更点は、カラーマップcm.jet() への入力が 0 から 1 の範囲である必要があることです。Z 値をスケーリングして、Normalizeを使用してこの範囲に合わせることができます。

import numpy as np
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import colors

fig = plt.figure()
ax = fig.gca(projection='3d')

N = 100
y = np.ones((N,1))
x = np.arange(1,N + 1)
z = 5*np.sin(x/5.)

cn = colors.Normalize(min(z), max(z)) # creates a Normalize object for these z values
for i in xrange(N-1):
    ax.plot(x[i:i+2], y[i:i+2], z[i:i+2], color=plt.cm.jet(cn(z[i])))

plt.show()

スケーリングされた z 値を含む 3d プロット

于 2014-05-28T17:31:14.420 に答える