pom*_*pum 1 python matplotlib mplot3d colormap
我有2个列表tab_x(包含x的值)和tab_z(包含z的值),它们具有相同的长度和值y.
我想绘制一条由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)
Run Code Online (Sandbox Code Playgroud)
我现在有这个

我试过这段代码
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)))
Run Code Online (Sandbox Code Playgroud)
完全失败:

你的第二次尝试几乎拥有它.唯一的变化是colormap cm.jet()的输入需要在0到1的范围内.您可以使用Normalize缩放z值以适合此范围.
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()
Run Code Online (Sandbox Code Playgroud)

| 归档时间: |
|
| 查看次数: |
1244 次 |
| 最近记录: |