使用比数据点更少的标记绘图(还是更好的CDF绘图方式?)[matplotlib,或通用绘图帮助]

qkf9rpyu  于 2022-11-15  发布在  其他
关注(0)|答案(2)|浏览(117)

我正在绘制具有大量数据点的累积分布函数。我正在同一绘图上绘制几条线,由于将以白色打印,因此这些线用标记标识。我希望标记在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')
ecfdbz9o

ecfdbz9o1#

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

flvlnr44

flvlnr442#

“marketery”可以采用不同的输入类型,如文档中所述:一个浮点数指定了标记之间的距离,作为屏幕空间中轴对角线的分数。例如,markevery=0.1将使10个标记沿着x轴等距分布,或者markevery =(0.1,0.1)将使一个标记沿对角线等距分布。

相关问题