自从我更新到ggplot版本2.0.0后,我无法重新创建绘图:似乎我无法像之前那样减少点大小,这在具有很多点的绘图中是一个问题。 在下面的例子中,plot1和plot2之间的点大小存在合理的差异,plot3中的点大小至少略小一点,但是在plot3和plot4之间,点大小没有差异:
df <- data.frame(x=1:10, y=runif(10))
pl <- ggplot(df) +
geom_point(aes(x,y), size=1)
ggsave("plot1.png", plot=pl, width=14, height=7, units="cm", dpi=1200 )
pl <- ggplot(df) +
geom_point(aes(x,y), size=0.1)
ggsave("plot2.png", plot=pl, width=14, height=7, units="cm", dpi=1200 )
pl <- ggplot(df) +
geom_point(aes(x,y), size=0.01)
ggsave("plot3.png", plot=pl, width=14, height=7, units="cm", dpi=1200 )
pl <- ggplot(df) +
geom_point(aes(x,y), size=0.001)
ggsave("plot4.png", plot=pl, width=14, height=7, units="cm", dpi=1200 )
在之前版本的ggplot2中,我使用了0.25的点大小,它看起来比现在小,这就是为什么我尝试使用新的ggplot2版本进一步减少它。我是否错过了新版本代码的更改?在文档中找不到任何内容......
答案 0 :(得分:16)
好的,我找到了解决方案。正如@henrik和@silkita所指出的那样,最新的ggplot2版本中默认形状从16变为19。正如您在文档中看到的那样(例如here),形状'19'略大于'16'。但这并不是2.0.0版本中“点”更大的原因。查看最新版本的geom-point.R
的ggplot2源代码,我们可以看到:
default_aes = aes(
shape = 19, colour = "black", size = 1.5, fill = NA,
alpha = NA, stroke = 0.5
)
在之前的版本中,它是:
default_aes <- function(.) aes(shape=16, colour="black", size=2, fill = NA, alpha = NA)
然后,要像以前一样得到小点,我们应该将stroke
置于零。总而言之,要获得最小的点,你应该写:
geom_point(size = 0.1) # ggplot2 before 2.0.0
geom_point(size = 0.1, stroke = 0, shape = 16) # ggplot2 2.0.0
顺便说一句,当使用最小点时,使用不同形状(像素仍然是像素)之间没有区别。
更新:正如Hadley Wickham在推特上指出的那样,release notes
解释了这一变化答案 1 :(得分:12)