ggplot 2.0.0中的磅值

时间:2016-01-06 17:19:09

标签: r ggplot2

自从我更新到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版本进一步减少它。我是否错过了新版本代码的更改?在文档中找不到任何内容......

2 个答案:

答案 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)

尝试使用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

的产率:

enter image description here

,同时:

pl <- ggplot(df) +
  geom_point(aes(x,y), size=1) + labs(title="size=1")
pl

产量: - (并且对于所有较小的尺寸都是相同的)

enter image description here