r - 为什么我的 R 代码生成多线图和条形图这么慢?

标签 r plot ggplot2

我正在制作一些相当复杂的绘图,将 R 中的多个数据集结合起来。ggplot2 非常适合这项工作,但是速度很慢。我意识到我正在处理大量数据点,但我认为我在某个地方遇到了任意瓶颈。让我解释一下……

我有 10 个不同的向量,每个向量长 150,000 个条目。我想使用 ggplot2 在命令行上用这些创建一个图形,并将生成的 png 保存到磁盘。 10 个向量中的每一个都将是不同的颜色,有些是线条,有些是条形。代码如下所示:

bulk = data.frame(vector1=c(1,5,3,5,...), ... vector10=c(5,3,77,5,3, ...))
png(filename="figure.png", width=4000, height=800)
ggplot(bulk, aes(x=vector1), aes(alpha=0.2)) +
geom_bar(aes(y=vector2), color="red", stat="identity") +
geom_bar(aes(y=vector3), color="black", stat="identity") +
..................
geom_line(aes(y=vector10), color="black", size=1) +
scale_y_log10()

请记住,我有 10 个向量,每个向量长 150,000 个条目,所以我有 150 万个数据点要绘制。但是,我使用的是 8 核、4Ghz/核机器,具有 32GB RAM,但 R 几乎不使用 RAM,只有 1 个核。这是意料之中的,因为据我所知,这个过程不能是多线程的,但渲染真的需要每张图大约 1 小时吗?

感觉好像我的代码在任意增加处理时间。特别是因为每 10 个向量有 20,000 个条目的相同问题只需要大约 20 秒。放大它所花费的时间远远超过线性缩放的时间。

有人对这个问题有解决方案或怀疑吗?感谢您的帮助!

最佳答案

如果你想要或需要绘制那么多点,你必须使用 base R。ggplot 对于中大型数据集非常慢。这个问题是known ,我不知道从那以后事情是否改变了性能。使用更快的机器也不会产生太大的影响。试试 base R。根据我的经验,即使是非常大的信息图表和可视化,它也快得多。

关于r - 为什么我的 R 代码生成多线图和条形图这么慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20711480/

相关文章:

matlab - 更改信号部分的颜色 MATLAB

r - ggplot2 具有条件面和整洁评估的面网格

r - 相同刻度/标签的几种颜色

r - 如何用文本替换表情符号并将它们视为单个单词?

r - 在 R 中计算方差和标准差的不同结果

plot - 有 "automatic"x

r - 如何在 ggplot 中独立定位两个图例

r - Clojure/Incanter 中的快速向量数学

python - 使用 gmail 在 R 中通过电子邮件发送附件

python - 绘制给定均值和西格玛的正态分布 - python