自从我更新到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, cm", dpi=1200 ) pl <- ggplot(df) + geom_point(aes(x,y), size=0.1) ggsave("plot2.png", plot=pl, cm", dpi=1200 ) pl <- ggplot(df) + geom_point(aes(x,y), size=0.01) ggsave("plot3.png", plot=pl, cm", dpi=1200 ) pl <- ggplot(df) + geom_point(aes(x,y), size=0.001) ggsave("plot4.png", plot=pl, cm", dpi=1200 )
在之前版本的ggplot2中,我使用了0.25的点大小,它看起来比现在小,这就是我尝试使用新的ggplot2版本进一步减少它的原因.我是否错过了新版本代码的更改?在文档中找不到任何内容......
好的,我找到了解决方案.正如@henrik和@silkita所指出的那样,最新的ggplot2版本中默认形状从16变为19.正如您在文档中看到的那样(例如此处),形状"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在推特上指出的那样,这一变化在发行说明中得到了解释
尝试使用shape参数:
n <- 10000 df <- data.frame(x=1:n, y=runif(n)) pl <- ggplot(df) + geom_point(aes(x,y), size=1,shape=".") + labs(title="shape='.',size=1") pl
收益率:
而:
pl <- ggplot(df) + geom_point(aes(x,y), size=1) + labs(title="size=1") pl
产量: - (对于所有较小的尺寸都是一样的)