[英]Line colour of 3D parametric curve in python's matplotlib.pyplot
[英]Python - Line colour of 3D parametric curve
我有2所列出tab_x(containe x的值)和tab_z(containe z的值),其具有相同的长度和y的值 。
我想绘制一个3D曲线,该曲线由z的值着色。 我知道可以将其绘制为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)))
完全失败:
您的第二次尝试几乎成功了。 唯一的变化是,输入到颜色表 cm.jet()必须在0到1.您可以扩展您的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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.