我认为你在这里有两个问题:
- 您正在绘制像素密度低的光栅图像(因此放大只会给您提供质量较差的图像)。
一种解决方案是使用 ggplot2 中的 ggsave() 函数输出到标量矢量图形 (.svg)。
例如:
library(ggplot2)
# Create dummy data
y=data.frame(matrix(rnorm(10000,5),ncol=2))
paste(object.size(y)/1e6,"mB")
# Save to image file
image=ggplot(data=x,aes(x=X1,y=X2))+geom_point()
# Write image to file
ggsave(filename="test.svg",plot=image,width=10,height=8,units="cm")
如果您不想要 .svg 文件,我会坚持使用 .png 文件。你可以看看这里res
的属性png()
2. 你正在同时绘制一些非常大的东西。
这就是事情变得有趣的地方。您可以考虑使用分层方法创建图像。那就是:通过它们的 id/groupings 从大型数据集中绘制多边形/线/点(我不确定您的数据到底如何 - 希望这会有所帮助)。我提供了一个演示以获得一些灵感:
# Write to .svg
enter code here
# Make dummy data
test_data=data.frame(matrix(c(1,2.5,3,3,1.5,2,2,2,1,1,3,1,0,1),ncol=2))
test_data$id=c('a','a','a','a','b','b','b')
#Plot data
plot(c(1,2),c(3,3),xlim=c(0,4),ylim=c(0,4),pch=15,col='red')
#Plot layers in big dataframe
by(test_data[,c("X1","X2")],INDICES=test_data$id,polygon)
by() 函数对于生成多层图非常方便。它比for()
R 中的循环快得多。