【问题标题】:Plotting too many points?绘制太多点?
【发布时间】:2013-03-31 21:02:41
【问题描述】:

R(base、lattice 或其他)如何从 100000 个元素的向量(或输出该值的函数)创建图形? 它会策划一些并拒绝其他人吗?把所有的情节都放在一起?我怎样才能改变这种行为?

我如何创建一个图表,在每个时间间隔我都可以看到最大值和最小值,就像在交易“条形”图表中一样? (或任何其他想法来可视化那么多信息,而无需自己事先计算间隔、最小值和最大值,也不需要使用财务包)

如何创建大型“水平滚动”图?

例如我想绘制前 100000 次迭代

zz <- (zz^2+1) %% nn     

从 zz=1 开始,nn = 10^7+1 x 轴将只是迭代次数。

总结。我想在一个很大的间隔内绘制一个有时很软但有时非常尖的函数的输出。尖峰非常重要。

问候

【问题讨论】:

标签: r plot large-data


【解决方案1】:

如果 R 可以生成绘图,它会简单地绘制点,即使它们彼此重叠。一般来说,这么多的点对于绘图并没有真正的用处,也没有必要。处理这个问题的一些策略是:

  • 对 2% 的数据进行二次抽样并绘制它。重复几次,看看结果是否改变
  • 不要绘制原始数据,而是先汇总。考虑计算时间平均值、首先对数据进行分箱等。

【讨论】:

  • 是的。我正在寻找可以自动完成的绘图包或功能。无论如何,如果我聚合计算每 300 个块的最大值和最小值的数据......你会使用什么绘图函数来绘制最大值和最小值而不使用财务包(并且不将向量转换为时间序列)。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    R 将绘制所有点,并且事情可能看起来很混乱。

    这是一个新包,但请查看 Hadley 的 bigvis package

    【讨论】:

    • 我刚刚在 Revolution Analytics 博客上看到了它。谢谢。我得试试。似乎可以处理大量数据并对其进行操作,但不能创建可滚动的图表。
    • 我已尝试安装 bigvis,但安装产生错误“错误:命令失败 (1)”且路径不包含任何空格。
    【解决方案4】:

    你提到你有时会有非常重要的尖峰。

    请看下面我如何绘制 ping 结果,其中绝大多数数据都在毫秒内,但峰值对我来说也很重要:

    基本上,我hexbin 所有响应时间

    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") 
    

    我想我已经发布了这个作为类似问题的解决方案,但我找不到它。

    【讨论】:

      猜你喜欢
      • 2018-09-10
      • 2021-01-06
      • 1970-01-01
      • 2015-05-13
      • 1970-01-01
      • 1970-01-01
      • 2015-05-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多