使用比数据点更少的标记进行打印(或使用更好的方式打印CDF?[matplotlib,或通用打印帮助]
我正在用大量数据点绘制累积分布函数。我在同一个图上画了几行,它们用标记来标识,因为它们将以黑白打印。我想要的是在x维上均匀分布的标记。我得到的是每个数据点一个标记(给定点的数量,它们都重叠) 我不确定这是我对如何做好绘图的理解,还是我对matplotlib缺乏理解。我找不到“标记频率”设置 对于一行,一个简单的解决方案是从该行中获取每一个N'值,并将其作为一个单独的行使用,linestyle='',但我希望标记垂直对齐,并且不同的x数组具有不同的长度使用比数据点更少的标记进行打印(或使用更好的方式打印CDF?[matplotlib,或通用打印帮助],matplotlib,distribution,plot,marker,cumulative-frequency,Matplotlib,Distribution,Plot,Marker,Cumulative Frequency,我正在用大量数据点绘制累积分布函数。我在同一个图上画了几行,它们用标记来标识,因为它们将以黑白打印。我想要的是在x维上均匀分布的标记。我得到的是每个数据点一个标记(给定点的数量,它们都重叠) 我不确定这是我对如何做好绘图的理解,还是我对matplotlib缺乏理解。我找不到“标记频率”设置 对于一行,一个简单的解决方案是从该行中获取每一个N'值,并将其作为一个单独的行使用,linestyle='',但我希望标记垂直对齐,并且不同的x数组具有不同的长度 # in reality, many tho
# 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')
您可以使用
plot(x,y,marker='o',markevery=5)
来标记每五个点,但我认为没有任何内置支持以偶数间隔设置标记。您可以决定要标记的x位置,例如使用numpy.searchsorted
查找位置之间的数据点,然后在相邻点之间插值以查找y坐标。嗯,这肯定比我的方法更好。该查查了!或者,markevery支持浮点输入,标记将沿线路以大致相等的距离隔开;标记之间沿直线的距离由轴边界框对角线的显示坐标距离乘以弧长标记间距的值
确定: