ggplot 2.0.0中的磅值

sil*_*ita 22 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 )
Run Code Online (Sandbox Code Playgroud)

在之前版本的ggplot2中,我使用了0.25的点大小,它看起来比现在小,这就是我尝试使用新的ggplot2版本进一步减少它的原因.我是否错过了新版本代码的更改?在文档中找不到任何内容......

Mat*_*ice 20

好的,我找到了解决方案.正如@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
  )
Run Code Online (Sandbox Code Playgroud)

在之前的版本中,它是:

default_aes <- function(.) aes(shape=16, colour="black", size=2, fill = NA, alpha = NA)
Run Code Online (Sandbox Code Playgroud)

然后,要像以前一样得到小点,我们应该把stroke它归零.总而言之,要获得最小的点,你应该写:

geom_point(size = 0.1) # ggplot2 before 2.0.0
geom_point(size = 0.1, stroke = 0, shape = 16) # ggplot2 2.0.0
Run Code Online (Sandbox Code Playgroud)

顺便说一句,当使用最小点时,使用不同形状(像素仍然是像素)之间没有区别.

更新:正如Hadley Wickham在推特上指出的那样,这一变化在发行说明中得到了解释

  • 除非我尝试它,否则它不起作用。你链接的文档声称`stroke`甚至不适用于`shape=16`。 (3认同)

Mik*_*ise 13

尝试使用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
Run Code Online (Sandbox Code Playgroud)

收益率:

在此输入图像描述

而:

pl <- ggplot(df) +
  geom_point(aes(x,y), size=1) + labs(title="size=1")
pl
Run Code Online (Sandbox Code Playgroud)

产量: - (对于所有较小的尺寸都是一样的)

在此输入图像描述

  • 貌似5年多了这个问题还没有解决 (2认同)