2

我在图像上绘制多色线条,线条的颜色应该代表一个给定的参数,该参数大约在 -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._color [p”的值给出: ]'。

正如我所说,'_color[p,:]' 大致在 -1 和 3 之间变化。下面是一个示例,说明 '_color[p,:]' 可能是什么:

在此处输入图像描述

我的问题是,创建的线条看起来没有太大的颜色变化,它们看起来都是单色的深蓝色,而 _color[p,:] 变化很大,我要求标准化采用其最小/最大值。

这是这样一条线的一个例子(看看振荡的深蓝色线,其他黑线是另一个值的轮廓):

在此处输入图像描述

这些功能的工作方式有什么我遗漏的吗?

4

1 回答 1

1

知道了!问题的答案在这里:

        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

这意味着“颜色”数组实际上比用于线段位置的数组大得多......只有“_color”的第一个值在其值变化不大的情况下使用。

于 2013-05-06T19:36:07.287 回答