自从更新到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版本进一步减小它的原因。我会错过新版本代码的更改吗?在文档中找不到任何内容...
最佳答案
好的,我找到了解决方案。正如@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在Twitter上指出的那样,此更改已在release notes中进行了解释
关于r - ggplot 2.0.0中的点大小,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34638902/