嗨,我真的不想尝试在我的情节中添加一个颜色条。
我有五个一维数组,时间,x和p,q,r都是相同的长度。我想绘制x vs p,x vs q和x vs r,但每个颜色代码都与时间有关,这样我就可以看到数据如何随时间演变。
我设法使用Python - Line colour of 3D parametric curve的答案作为示例。这是我的代码:
import matplotlib.pyplot as plt
import numpy as np
from numpy import *
from matplotlib import colors
time, x, p, q, r = loadtxt('data.txt', unpack = True)
cn = colors.Normalize(min(time), max(time))
fig, (axes1, axes2, axes3) = plt.subplots(1,3)
for i in range(len(time)):
axes1.plot(x[i], p[i], '.', color=plt.cm.jet(cn(time[i])))
axes2.plot(x[i], q[i], '.', color=plt.cm.jet(cn(time[i])))
axes3.plot(x[i], r[i], '.', color=plt.cm.jet(cn(time[i])))
plt.show()
但是现在我不得不尝试在这个情节中添加一个颜色条,所以这些点的颜色有一定的含义。
我尝试过使用与Matplotlib 2 Subplots, 1 Colorbar类似的内容,但我不确定mappable im和imshow。
任何帮助将不胜感激! 感谢
答案 0 :(得分:0)
这(由第三个变量着色)是scatter
的目的。您需要使用它(或代理ScalarMappable
)来获取色彩图。
因为所有三个轴都使用色彩映射显示相同的数据,所以您无需对色条执行任何操作。所有情节都相同。
作为一个基于你的简单例子:
import numpy as np
import matplotlib.pyplot as plt
time, x, p, q, r = np.random.random((5, 50))
fig, axes = plt.subplots(ncols=3)
for ax, y in zip(axes.flat, [p, q, r]):
# "s=150" indicates a markersize of 15 points (blame matlab)
scat = ax.scatter(x, y, c=time, s=150, cmap='jet')
fig.colorbar(scat)
plt.show()