Matplotlib LineCollection中的颜色范围

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

我在一张图片上画了多色的线条,线条的颜色应该代表一个给定的参数,在-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 = 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个问题,你只接受了这一个!是的,我会的,谢谢!我真的不知道这里的情况如何。