2

Python プロットの問題に遭遇しました。私がプロットした線は、最後の値ポイントから最初の値ポイントまで円を描くように見えるため、この線は閉じた線であり、2 つの開口端はありません。説明が難しいので、ここに画像をアップロードしました。 サークルプロット

関連するコードは次のとおりです。

plt.plot(newx, newy0Normalized, color='red', linewidth=2, marker='1');
plt.plot(newx, newy1Normalized, color='green', linewidth=2, marker='2');

ここで、newx は 50 ~ 200 の範囲の整数で、newy0Normalized は対応するパーセンテージです

newx と newy0Normalized の生成方法は少し長くなります。データ (および構造) がどのように見えるかがわかるように、ここにデータを出力します。

for i in range(len(newx)):
    print "%d\t%.2f" % (newx[i], newy0Normalized[i])
100 7.69
101 14.81
102 9.09
103 8.33
more data here
135 40.00
136 60.00
137 50.00
139 0.00
66  100.00
67  0.00
68  0.00
69  0.00
more data here
97  11.54
98  14.81
99  11.11
4

1 に答える 1

2

これは、matplotlib のライン プロットのしくみです。リストの最初のデータ ポイントから開始し、リストの次のデータ ポイントに線を描画し、リストの最後のポイントに到達するまで続けます。ただし、これは閉じたループではありません。x = 99 と x = 100 の間のグラフの中央にあるブレークに注意してください。あなたの場合、データはリストの中央で x = 139 から x = 66 にジャンプするため、matplotlib はそれに応じてポイントから線を引きます。 x = 139 から x = 66 の点まで。

これが発生したくない場合は、プロットする前にデータ ポイントを x 座標で並べ替えるだけです。','または、 or'.'形式指定子を使用して、接続線なしで点としてプロットすることもできます。(科学的根拠に基づいて、ほとんどの場合、私は後者を提案しますが、どちらが正しいかは、もちろんデータの解釈によって異なります。)

于 2013-02-21T19:51:41.970 に答える