绘制标记的数量少于数据点(或绘制CDF的更好方法?)[matplotlib,或一般绘图帮助]

Jam*_*ead 28 plot distribution matplotlib cumulative-frequency marker

我正在绘制具有大量数据点的累积分布函数.我在同一个绘图上绘制了几行,用标记识别,因为它将以黑白打印.我想要的是在x维度上均匀间隔的标记.我得到的是每个数据点一个标记(并且给定点数,它们都重叠)

我不确定这是我对如何绘制好的理解,或者只是缺乏理解matplotlib.我找不到'标记频率'设置.

一行的简单解决方案是从行中获取每个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')
Run Code Online (Sandbox Code Playgroud)

Jou*_*nen 46

您可以plot(x,y,marker='o',markevery=5)标记每五个点,但我认为没有任何内置支持以均匀间隔设置标记.你可以决定你想要标记的x位置,例如numpy.searchsorted用来找到位置之间的数据点,然后在相邻点之间进行插值以找到y坐标.

  • 或者,markevery 支持浮点输入,其中`标记将沿线以大致相等的距离间隔开;标记之间沿线的距离是通过将轴边界框对角线的显示坐标距离乘以值来确定的 http://matplotlib.org/api/lines_api.html#matplotlib.lines.Line2D.set_markevery (4认同)