绘制的点太多怎么办?

3
R(base,lattice或其他)如何从一个包含100000个元素的向量(或输出这些值的函数)创建图形?它是绘制一些并拒绝其他吗?将所有内容叠加在一起绘制?我该如何更改此行为?
我如何创建一个图形,在每个间隔内都可以看到最大和最小值,就像交易“条形”图表一样?(或者任何其他想法,可以可视化这么多信息,而无需事先计算间隔,最小值和最大值,也不使用金融软件包)
我如何创建一个大型的“水平滚动”图形?
例如,我想绘制前100,000次迭代。
zz <- (zz^2+1) %% nn     

从zz=1开始,nn=10^7+1 x轴仅为迭代次数。

总结一下。我想绘制一个函数的输出,有时候很柔和,有时候非常尖锐,在一个非常大的区间内。 尖峰非常重要。

敬礼


https://dev59.com/VWsz5IYBdhLWcg3wsaLN ; https://dev59.com/aWgu5IYBdhLWcg3w9ruX - Ben Bolker
4个回答

6
你提到有时候出现非常重要的高峰。
下面演示了我如何绘制ping结果,其中绝大部分数据都在毫秒级别,但是对我来说峰值也很重要:

ping

基本上,我对所有响应时间小于500ms的数据点进行hexbin处理,并为所有更长的响应时间绘制点。5s的响应时间被标记为超时:
ggplot (df, aes (x = date, y = t5)) + 
        stat_binhex (data = df [df$t5 <= 0.5,], bins = nrow (df) / 250) +
        geom_point (data = df [df$t5 > 0.5,], aes (col = type), shape = 3) +
        ylim (c (0, 5)) +
        scale_fill_gradient (low = "#AAAAFF", high = "#000080") +
        scale_colour_manual ("response type", 
                             values = c (normal = "black", timeout = "red")) + 
        ylab ("t / s") 

我想我已经在类似问题的解答中发布了这个内容,但是我找不到了。

(该段文字已被翻译为中文)

2

如果 R 能够生成图形,它将简单地绘制这些点,即使它们重叠在一起。通常,这样大量的点对于绘图来说并不真正有用,也不必要。一些处理这种情况的策略包括:

  • 子采样数据,比如只选取 2% 的数据进行绘图。多次尝试以查看结果是否改变。
  • 不要直接绘制原始数据,而是先进行聚合。考虑计算时间平均值、首先进行数据分组等。

是的。我正在寻找一个可以自动完成此操作的绘图包或函数。无论如何,如果我聚合数据并计算每个300块的最大值和最小值...您会使用哪个绘图函数来绘制这些最大值和最小值,而不使用金融包(也不将向量转换为时间序列)? - skan

2

R会绘制所有点,导致图像可能会显得杂乱无序。

虽然这是一个新的软件包,但请查看 Hadley 的 bigvis 软件包


我刚在Revolution Analytics博客上看到了它。谢谢。我必须尝试一下。它似乎可以处理大量的数据并进行操作,但不能创建可滚动的图表。 - skan
我尝试安装bigvis,但是安装过程出现错误“Error: command failed (1)”,并且路径中不包含任何空格。 - skan

1
"

curve在这里可能是一个不错的选择:

"
f <- function(x){(x^2+1)%%(1+1e7)}
curve(f, from=1, to=1e5)

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接