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、:]は大きく変化するのに対し、それらはすべてモノクロの濃い青のように見えます.最小/最大値を取るように正規化を求めます.

以下はそのような線の例です (振動する濃い青色の線を見てください。他の黒い線は別の値の等高線です)。

ここに画像の説明を入力

これらの関数が機能する方法に欠けているものはありますか?

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' 配列は、実際には、線分の位置に使用される配列よりもはるかに大きいということです..'_color' の最初の値のみが使用され、その値はそれほど変化しません。

于 2013-05-06T19:36:07.287 に答える