2017-12-10 7 views
3

問題はmatplotlib棒グラフと関連しています。具体的には、私が棒グラフを描くとき、​​棒のいくつかは見えません。Matplotlib棒グラフ - いくつかの棒は表示されず、幅が異なるようです。

ドットとバーは同じデータ系列を使用しますので、同じ場所に置く必要があります Dots and bars uses the same data series so should be in the same places

私はこの問題の原因がわからないので、私はこの質問を投稿しています。 はまた、私はフルスクリーンにウィンドウを拡大したときに同じプロットのために、不足しているバーが魔法

最初の絵と同じデータ系列、単にフルスクリーンウィンドウ The same data series as in the first picture, just full screen window

を表示されていることに気づきました。

同じことが、私は、プロットの色を変更した場合、また起こるので、私が使用して言うことができます:

artist = plot.bar(x_data_series, y_data_series, color="black") 

を今、私はこれではない完全なチャートがありますが、私はただの色を設定する(使用する場合右後の2回目):

artist = plot.bar(x_data_series, y_data_series, color="black") 
matplotlib.artist.setp(artist, color="black") 

私はこれを取得:

は今、すべてのバーは Now all bars are visible表示されます。私はこの不完全なチャートに拡大すると

同じことが起こります:

はここでも、すべてのバーが Here also all bars are visible表示されます。

あなたがここに見ることができるように何より「見えないバー」、彼らが表示されているとき、彼らは他よりも少し厚くなるように見えるが、しかし彼らは、アーティストのプロパティで幅が同じである:

このバーの1つは厚いもので、もう1つは「通常」のもので、どちらも0.8インチの幅です One of this bars is the thicker one and the other the "normal" one, both are 0.8 in width

これはtkinterに埋め込まれたグラフです。ここ はフィギュア、キャンバスであり、軸(親フレームはちょうどプロットが置かれているフレームである):私が見つけた

figure = Figure(dpi=100) 
plot = figure.add_subplot(111) 
canvas = FigureCanvasTkAgg(figure, parent_frame) 

「回避策」は私にとって満足できるものではないと私は本当にたいと思います問題の原因を見つけるために、幅の問題に加えて私が把握できないものがあります。

+0

画像は誰のために埋め込まれていますか?現在の状態では、右クリックと「新しいタブで画像を開く」オプションを使用して画像を見ることができるだけでなく、画像情報も2回書き込まれますか? – Nae

答えて

1

バー幅が0.8であるとは、バーが幅が0.8データ単位であることを意味します。 500ピクセル幅のグラフ上に〜500データユニットを表示すると、バーの幅は約0.8ピクセルになります。言い換えれば、バーを見る機会が80%であるか、平均して5番目のバーが表示されないことがあります。その結果はむしろ期待されます。

バーの幅は1〜2ピクセルの間であるため、バーカバーは1ピクセルで表示される可能性が高くなりますが、バーの幅は2ピクセルです。

setp(artist, color="black")を使用すると、すべてのバーが表示される理由は、バーの色がバーとそのエッジに適用されるためです。エッジは、各バーが見えるように、1ポイント、すなわちピクセルより少し大きい。

最後に棒グラフが必要です。その場合、バーをデータ単位で意味のある幅のある実数のバーにします。 または、折れ線グラフが必要な場合があります。私。 stemプロットをプロットしても意味があります。

関連する問題