使用比数据点更少的标记进行绘图(或绘制 CDF 的更好方法?)[matplotlib,或一般绘图帮助]

Posted

技术标签:

【中文标题】使用比数据点更少的标记进行绘图(或绘制 CDF 的更好方法?)[matplotlib,或一般绘图帮助]【英文标题】:Plot with fewer markers than data points (or a better way to plot CDFs?) [matplotlib, or general plotting help] 【发布时间】:2011-01-03 15:52:48 【问题描述】:

我正在绘制具有大量数据点的累积分布函数。我在同一个图上绘制了几条线,这些线用标记标识,因为它将以黑白打印。我想要的是在 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')

【问题讨论】:

弧长标记间距相关解决方案:***.com/questions/17406758/… 【参考方案1】:

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

【讨论】:

嗯,这肯定比我的方法更好。是时候查找搜索排序了! 另外,markevery 支持 markers will be spaced at approximately equal distances along the line; the distance along the line between markers is determined by multiplying the display-coordinate distance of the axes bounding-box diagonal by the value matplotlib.org/api/… 的浮点输入

以上是关于使用比数据点更少的标记进行绘图(或绘制 CDF 的更好方法?)[matplotlib,或一般绘图帮助]的主要内容,如果未能解决你的问题,请参考以下文章

用更少的时间在 R 中绘制大型数据集

iphone - 啥消耗更少的电池? StartmonitoringLocationsChanges 或 startmonitoringforregion?

Rails 可以期待每秒 100 个或更少的请求(对于非缓存页面)吗?

PyGtk 在滚动条上绘制标记

weka 中的测试文件是不是需要与训练相同或更少的功能?

如何用matlab 画散点图 如何标记数据点的颜色