mpl.rcParams['legend.fontsize'] = 10
fig1 = plt.figure()
ax = fig1.gca(projection='3d')
ax.plot(tab_C[0], tab_C[1], zs=0, zdir='z', label = "Projection de la trajectoire de C", color='k')
ax.plot(tab_M[0], tab_M[1], zs=0, zdir='z', label = "Projection de la trajectoire de M", color='r')
for i in range(0,len(tab_t)):
ax.plot(tab_C[0][i:i+2], tab_C[1][i:i+2], tab_C[2][i:i+2], color=plt.cm.rainbow(255*i/len(tab_t)))
ax.plot(tab_M[0][i:i+2], tab_M[1][i:i+2], tab_M[2][i:i+2], color=plt.cm.rainbow(255*i/len(tab_t)))
ax.legend()
ax.set_xlabel('I')
ax.set_ylabel('J')
ax.set_zlabel('K')
m = cm.ScalarMappable(cmap=cm.rainbow)
m.set_array(tab_t)
plt.colorbar(m)
Run Code Online (Sandbox Code Playgroud)
我用我的代码得到了这个情节
我的问题是 - 我想为颜色条设置标签,但ScalarMappale没有方法set_label() - 我想设置zmin = 0以清楚地看到计划上的投影(0xy)但似乎这里的zmin是0.05当我做ax.set_zlim(bottom = 0)它返回
Traceback (most recent call last):
File "code.py", line 117, in <module>
ax.set_zlim(bottom=0)
File "/usr/lib/pymodules/python2.7/mpl_toolkits/mplot3d/axes3d.py", …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用matplotlib的工具包mplot3D绘制3D线图我有4个数组
我用这个绘制了我的情节:
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig1 = plt.figure()
ax = fig1.gca(projection='3d')
ax.plot(tab_C[0], tab_C[1], tab_C[2])
plt.show()
Run Code Online (Sandbox Code Playgroud)
它工作但现在我希望这个情节有基于时间值的彩虹色.我搜索了matplotlib的网页,但没有任何内容.有关这个问题的任何建议吗?
我有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)
完全失败:
>>> import numpy as np
>>> a=np.arange(0,2,0.2)
>>> a
array([ 0. , 0.2, 0.4, 0.6, 0.8, 1. , 1.2, 1.4, 1.6, 1.8])
>>> a=a.tolist()
>>> a
[0.0, 0.2, 0.4, 0.6000000000000001, 0.8, 1.0, 1.2000000000000002, 1.4000000000000001, 1.6, 1.8]
>>> a.index(0.6)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: 0.6 is not in list
Run Code Online (Sandbox Code Playgroud)
似乎列表中的某些值已更改,我无法找到它们index()
.我该如何解决这个问题?