我有一个图形,它在x轴上有百分比,在y轴上有位置.数据帧很大(超过200万行),所以我将点分组到10k个箱中,并绘制出箱的平均百分比.我使用的代码如下:

ggplot(data, aes(norm_location, percentage, colour = class)) +
  stat_summary_bin(fun = "mean", 
                   geom="point", 
                   bins = 10000) + 

由于数据的大小,每次我需要更改与图形相关的某些内容(标题、轴名称、 colored颜色 等)时,运行此代码需要很长时间.有没有方法将箱的值存储在一个有10k行的较小数据框中,并使用它来代替 Big Data ?怎样才能更有效地生成这个图呢?

谢谢!

推荐答案

如果我理解正确的话,您希望在绘制之前汇总数据以获得更快的速度.对我来说,这听起来相当合理.此外,如果你乐于使用data table,你可以从它的多线程功能中受益.

#sample data
data= data.table(norm_location = 1:2000000, percentage= runif(2000000, min=0, max=1), class = sample(c('apple','pear','orange'), 2000000, replace=T))

#manully slice 10000 bins and binwidth, and then plot only points of each bin
data[, binwidth := (max(norm_location)-min(norm_location))/10000, by = class][, 
.(percentage=mean(percentage)), by=.((norm_location-min(norm_location))%/%binwidth, class, binwidth)][, 
          norm_location:= norm_location*binwidth, by=class]%>%
  ggplot(aes(norm_location, percentage, colour = class)) +
  geom_point()

enter image description here

R相关问答推荐

更改网格的crs以匹配简单要素点对象的crs

列出用m n个值替换来绘制n个数字的所有方法(i.o.w.:R中大小为n的集合的所有划分为m个不同子集)

更新合适的R mgcv::bam模型报告无效类型(关闭).'';错误

更改Heatmap Annotation对象的名称

如何使用rmarkdown和kableExtra删除包含折叠行的表的第一列的名称

在R中使用Scale_y_Break后更改y轴标签

提取第一个下划线和最后一个下划线之间的任何内容,例外情况除外

可以替代与NSE一起使用的‘any_of()’吗?

使用data.table::fcase()而不是dplyr::case_When()时保持值

解析R函数中的变量时出现的问题

如何通过匹配R中所有可能的组合来从宽到长旋转多个列?

如何在科学记数法中显示因子

在R中创建连续的期间

R -使用矩阵reshape 列表

R中的类别比较

按两个因素将观测值分组后计算单独的百分比

需要一个函数来在第一行创建一个新变量,然后用新变量替换一个不同的变量(对于多行)

条形图中的条形图没有try 赋予它们的 colored颜色

具有由向量定义的可变步长的序列

reshape 数据帧-基于组将行转换为列