matplotlibでエラーバーを使用してこの興味深い問題に遭遇しました。2つのリストがあります。0から999の範囲の整数値のリストである「反復」。「平均」は、実際の負の値を持つ1000サイズのリストです。
「yerr」属性を指定しない場合、次のようになります。
エラーバー(反復、平均)
ただし、yerr属性を指定し、0に設定すると、次のようになります。
エラーバー(反復、平均、yerr = 0)
両方の写真が同じである必要があることは私には明らかなようですが、2番目の写真は小さな水平線で構成されており、最初の写真は連続しているように見えます。
問題は、配列をyerrとして渡すときに発生します(サイズ:1000、画像を過密にしないために、index%50 == 0の実際の標準誤差値を除いてすべての値を0に設定します)。
エラーバー(反復、平均、yerr = stderr)
メインラインが連続している画像(最初の画像のように)を取得したいのですが、代わりに2番目の画像のように乱雑な画像を取得します。ラインスタイルパラメータの変更など、さまざまなことを試しましたが、それでも最初の画像のようなものを取得し続けます(50ステップ間隔ごとにエラーバーが表示されます)
私は何か間違ったことをしていますか?私がやりたいことをすることは可能ですか?
アップデート1
Davidがコメントで述べているように、stderrのデフォルトの形状が0であるため、水平線が表示されます。値0は、エラーバーを表さないと思いました。したがって、0に設定した場所にエラーバーをプロットすることを避ける必要があるだけです(エラーバーは50、100、150、200、250 ... 1000のみ)。
アップデート2(および解決済み)
ここに、Davidが提案したソリューションを追加します。
# plot all points without error bars
plot(iterations, average)
# plot errorbars for every 50th point
errorbar(iterations[::50], average[::50], yerr=stderr[::50], linestyle='None')
各ヤーバーの間に線がプロットされないように、linestyle='None'を追加しました。
どうもありがとう!