我一直在努力解决这个问题,并且接近我想要的但却错过了额外的一两行.
基本上,我想绘制一条线,其颜色根据第三个数组的值而变化.潜伏在周围我发现这很好用(虽然很慢)并且代表了问题
import numpy as np
import matplotlib.pyplot as plt
c = np.arange(1,100)
x = np.arange(1,100)
y = np.arange(1,100)
cm = plt.get_cmap('hsv')
fig = plt.figure(figsize=(5,5))
ax1 = plt.subplot(111)
no_points = len(c)
ax1.set_color_cycle([cm(1.*i/(no_points-1))
for i in range(no_points-1)])
for i in range(no_points-1):
bar = ax1.plot(x[i:i+2],y[i:i+2])
plt.show()
Run Code Online (Sandbox Code Playgroud)
这给了我这个:
我希望能够在此图中包含一个颜色条.到目前为止,我还没有能够破解它.可能会有其他行包含不同的x,y但是相同的c,所以我认为Normalize对象将是正确的路径.
更大的图片是这个图是2x2子图网格的一部分.我已经使用matplotlib.colorbar.make_axes(ax4)为颜色条轴对象创建空间,其中ax4具有第4个子图.
该matplotlib文档详细讲解了如何正常化的colormaps的pcolormesh,但我怎么能这样做是正确的散点图?
normalize = mcolors.Normalize(vmin=-1, vmax=1)
plt.scatter(x,y,z,cmap=colormap(normalize),marker='*',s=5)
Run Code Online (Sandbox Code Playgroud)
不起作用(TypeError: Cannot cast array data from dtype('O') to dtype('int64') according to the rule 'safe')
它只是z数据不是从-1到1,我正在绘制多个数据集,其限制在+/- 0.93 - 98左右,但我希望颜色以零为中心,从-1到1,所以我对所有各种数据集都有相同的参考.
哦,当我不尝试正常化时,我明白了TypeError: scatter() got multiple values for keyword argument 's'.显然,我不知道如何在散点图中使用色彩映射.