2017-09-09 7 views
0

Iは、以下に要約matplotlibのためのいくつかのPythonコード(のpython3上で実行されている)を有する:Matplotlibのplot()は、渡された値とは異なる値をプロットするのはなぜですか?

title = 'A title' 
fig, ax = plt.subplots() 
x_values = [] 
y_values = [] 
# x_values and y_values are populated by extracting values from a dict I pass in. 
# The values are extracted correctly; I printed them out for a sanity check. 

plt.plot(x_values, y_values) 

ax.set_xlim([0, 100]) 
plt.ylabel('Y') 
plt.xlabel('X') 
plt.title(title, fontsize=title_size) 
fig.autofmt_xdate() 

plt.show() 

以下は特定の辞書のためx_valuesとy_valuesにあるものを示す(そのように全てのY値が起きます)この特定のデータセットの同じ次 List contents

グラフィカル出力である: Bad graph

注意だけでなく、グラフの形状は、予想外であるが、Y軸スケールはincredibありますリオは同様に。

私はこれがなぜ起こっているのか分かりません。より多くのバリエーションを持つ他のデータセットについては、プロットされた値が生の値と一致するより良いグラフが得られます。たとえば: Other list contents Good graph

は、私は気づいていないのだ()のプロットのいくつかの風変わりはありますか?または、悪いシーケンスやコードの組み合わせを使用していますか?そうでなければ、何が原因でしょうか?

+0

コードや画像の画像を投稿しないでください - 私たちにデータを共有してください(最小限の例)。 – wwii

+2

表示されている数字が表示されていますが、軸に有効数字(小数点以下6桁と7桁)が表示されています – AChampion

+0

これは恐ろしい質問でした...自動スケーリングがあまりにも知的ではないと思いました数字を慎重にチェックしていない! –

答えて

3

プロットは自動スケールされます。あなたの最初のプロットには小さな範囲があります。プロットの左上を見ると、1e-7 + 2.44005249e2という数字があり、yのすべての値をvalue_on_y*1e-7 + 244.005249と読み替える必要があります。つまり、y軸の数値は区切り文字の後の6番目と7番目の数字です。あなたのデータ。

関連する問題