R 如何改进ggplot2中的锯齿线图?

R 如何改进ggplot2中的锯齿线图?,r,ggplot2,line,R,Ggplot2,Line,在ggplot2中,geom_line()将多个点连接成平滑的可显示线,他们是否有任何改善锯齿线的过程 lai.se <- structure(list(DOS = structure(c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L), .Label = c("D1", "D2", "D3"), class = "factor"), DAS = c(31L, 84L, 113L, 132L, 1

在ggplot2中,geom_line()将多个点连接成平滑的可显示线,他们是否有任何改善锯齿线的过程

     lai.se <- structure(list(DOS = structure(c(1L, 1L, 1L, 1L, 1L, 2L, 2L, 
2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L), .Label = c("D1", "D2", "D3"), class = "factor"), 
    DAS = c(31L, 84L, 113L, 132L, 160L, 35L, 82L, 108L, 126L, 
    146L, 37L, 83L, 94L, 113L, 134L), N = c(24L, 24L, 24L, 24L, 
    24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L), LAI = c(1.5879167, 
    4.3241667, 3.70375, 2.9704167, 0.1879167, 1.7679167, 3.7670833, 
    3.4104167, 2.7879167, 0.195, 1.3179167, 3.5233333, 3.1604167, 
    2.45875, 0.2758333), sd = c(0.4276323, 0.32478644, 0.34151596, 
    0.3338638, 0.09868611, 0.18551876, 0.38212767, 0.31431747, 
    0.35024189, 0.08836682, 0.16378616, 0.29256982, 0.28257326, 
    0.44131535, 0.09536733), se = c(0.08729008, 0.06629675, 0.06971165, 
    0.06814966, 0.02014422, 0.03786886, 0.07800148, 0.06415978, 
    0.07149283, 0.0180378, 0.03343271, 0.05972057, 0.05768002, 
    0.09008312, 0.01946677), ci = c(0.18057328, 0.13714529, 0.14420954, 
    0.14097832, 0.04167149, 0.0783377, 0.16135836, 0.13272463, 
    0.14789418, 0.03731404, 0.06916083, 0.1235414, 0.11932022, 
    0.18635113, 0.04027009)), .Names = c("DOS", "DAS", "N", "LAI", 
"sd", "se", "ci"), class = "data.frame", row.names = c(NA, -15L
))
    ggplot(lai.se, aes(x=DAS, y=LAI, colour=DOS)) + 
  geom_errorbar(aes(ymin=LAI-se, ymax=LAI+se), colour ="black", size =.5, width=1, position=position_dodge(.9)) +
  geom_line() +
  geom_point()+ theme_bw()

我猜你是在试图缓和矛盾。这就是你要找的东西吗

ggplot(lai.se, aes(x=DAS, y=LAI, colour=DOS)) + 
  geom_errorbar(aes(ymin=LAI-se, ymax=LAI+se), colour ="black", size =.5, width=1, position=position_dodge(.9)) +
  geom_smooth() +
  geom_point()+ theme_bw()

将图形输出到以矢量格式(如PDF或PostScript)存储的文件中,然后使用或类似工具以高分辨率(150、300甚至600 dpi)将该矢量图像渲染为位图(PNG、JPEG等):


文件大小将很大(并且随着最终产品分辨率的提高而变得越来越大),但位图的锯齿度在较高的像素密度下会消失。

在您对我的评论的回答中,您确认要修改线条(而不是更改绘图曲线)

我认为在R中实现这一点的唯一方法是使用Cairo,这里有一个关于如何使用圆实现这一点的教程,我希望您可以调整它以使用线条:


正如其他人提到的,基于矢量的图像格式(如PDF或SVG)可能是最好的选择。如果您想使用位图,如PNG,则可以使用
PNG()
res
选项来提高图像的分辨率

png(“myplot.png”,宽度=1800,高度=1800,分辨率=600)

这将以600 dpi的速度生成3英寸x 3英寸的图像(真实尺寸)。根据我的经验,对于相对简单的图形,文件大小仍然是合理的

有关如何改进图像的更多想法,请参阅本博客文章:


您是指像这样的抗锯齿线吗?:我同意@eznme的说法,您所指的抗锯齿问题可能与您将图形打印到的设备有关,而不是ggplot2本身。解决它将取决于您的平台和系统配置,这就是为什么我要求输出
sessionInfo()
@joran我添加了sessionInfo()。请帮帮我。我正在使用RStudio(0.97.248)@eznme是的,你是对的。如何摆脱它?下面介绍了您的选项(Cairo或保存到PDF)。您至少可以尝试将
ggsave
保存到png并指定一个dpi。谢谢您的帮助。但我已经试过了。您甚至可以在这里注意到创建的线是锯齿状的。我要找的是高质量的线条图,就像在MS Excel中创建的那样(不是像素化的)。
ggplot(lai.se, aes(x=DAS, y=LAI, colour=DOS)) + 
  geom_errorbar(aes(ymin=LAI-se, ymax=LAI+se), colour ="black", size =.5, width=1, position=position_dodge(.9)) +
  geom_smooth() +
  geom_point()+ theme_bw()
$ convert myGraphAsVector.pdf -density 300 myGraphAs300DpiBitmap.png