Matplotlib LineCollection中的颜色范围
我在一张图片上画了多色的线条,线条的颜色应该代表一个给定的参数,在-1和3之间变化 以下代码部分用于构建这些行:Matplotlib LineCollection中的颜色范围,matplotlib,Matplotlib,我在一张图片上画了多色的线条,线条的颜色应该代表一个给定的参数,在-1和3之间变化 以下代码部分用于构建这些行: x = self._tprun.r[0,p,::100] # x coordinate y = self._tprun.r[1,p,::100] # y coordinate points = np.array([x, y]).T.reshape(-1, 1, 2) segments
x = self._tprun.r[0,p,::100] # x coordinate
y = self._tprun.r[1,p,::100] # y coordinate
points = np.array([x, y]).T.reshape(-1, 1, 2)
segments = np.concatenate([points[:-1], points[1:]], axis=1)
# 'color' is the parameter that will color the line
vmin = self._color[p,:].min()
vmax = self._color[p,:].max()
lc = LineCollection(segments,
cmap=plt.get_cmap('jet'),
norm=plt.Normalize(vmin=vmin,vmax=vmax))
lc.set_array(self._color[p,:])
lc.set_linewidth(1)
self._ax.add_collection(lc)
此代码位于“p”上的一个循环内,因此它将在数组“x”和“y”给定的位置创建多行,并且颜色应该由“self.\u color[p,:]”的值给定
正如我所说,“_color[p,:]”大致在-1和3之间变化。下面是一个“_color[p,:]”可能是什么的示例:
我的问题是,创建的线条看起来没有太多的颜色变化,它们看起来都是单色深蓝色,而_color[p,:]变化很大,我要求标准化取其最小/最大值
下面是这样一条线的示例(看看振荡的深蓝色线,其他黑色线是另一个值的轮廓):
在这些函数的工作方式中,我有什么遗漏吗?明白了!
问题的答案如下:
x = self._tprun.r[0,p,::100] # re-sample every 100 values !!
y = self._tprun.r[1,p,::100] #
# [...]
#lc.set_array(self._color[p,:]) # self._color[p,:] is not resampled
lc.set_array(self._color[p,::100]) # this works because resampled
这意味着“颜色”数组实际上比用于线段位置的数组大得多。。。。仅使用“\u color”的第一个值,其值变化不大。如果您为我们提供完整且可运行的问题示例,请参阅更容易提供帮助。很高兴您找到了答案!请记住接受你的答案(并更新它以实际解决问题;))当它允许你“接受你的答案”和“更新它以解决问题”是什么意思?接受答案是点击大灰色复选框,你答案中的代码只是你说不起作用的代码的副本。您应该更新它以重新采样颜色数据。@Heimdall您还应该尝试将其他人提供给您的答案标记为“已接受”。到目前为止,你有14个问题,你只接受了这一个!是的,我会的,谢谢!我真的不知道这里的情况如何。