web-dev-qa-db-ja.com

データポイントよりも少ないマーカーでプロットします(またはCDFをプロットするためのより良い方法ですか?)[matplotlib、または一般的なプロットのヘルプ]

多数のデータポイントを使用して累積分布関数をプロットしています。同じプロットに数本の線をプロットしています。これらの線は白黒で印刷されるため、マーカーで識別されます。私が欲しいのは、x次元で等間隔に配置されたマーカーです。私が得ているのは、データポイントごとに1つのマーカーです(そして、ポイントの数を考えると、それらはすべて重複しています)

うまくプロットする方法を理解しているのか、matplotlibを理解していないだけなのかはわかりません。 「マーカー頻度」の設定が見つかりません。

1つの行の簡単な解決策は、行からN番目ごとの値を取得し、それをlinestyle = ''の個別の行として使用することですが、マーカーを垂直方向に配置し、x配列が異なると異なる長さ。

# in reality, many thousands of values
x_example = [ 567, 460, 66, 1034, 275, 26, 628, 99, 287, 157, 705, 421, 1093, \ 
     139, 204, 14, 240, 179, 94, 139, 645, 670, 47, 520, 891, 450, 56, 964,   \
     1728, 99, 277, 356, 1628, 745, 364, 88, 112, 810, 816, 523, 401, 89,     \ 
     278, 917, 370, 53, 39, 90, 853, 356 ] 
x = sort(x_example)
y = linspace(0,1,len(x))

ax = subplot(1,1,1)
plots[w] = ax.plot(x,y, marker='o')
28
James Broadhead

plot(x,y,marker='o',markevery=5)を実行して、5ポイントごとにマークを付けることができますが、等間隔でマークを設定するための組み込みサポートはないと思います。マークを付けるxの場所を決めることができます。たとえば、 numpy.searchsorted位置がどのデータポイントの間にあるかを見つけ、次に隣接するポイント間を補間してy座標を見つけます。

43