ggplot2:理解点大小

时间:2017-06-24 01:07:07

标签: r ggplot2

我试图了解ggplot / grid如何确定要渲染的磅值。 This answer(来自Hadley的评论)描述了.pt 幻数常量的作用,但我无法看到这些数字是如何相加的。这表明:

# empty ggplot obj with no margins outside panel
p0 = ggplot() + scale_size_identity() +
  scale_y_continuous(expand = c(0,0)) + scale_x_continuous(expand = c(0,0)) +
  theme(axis.text = element_blank(), panel.grid = element_blank(),
        panel.border = element_rect(colour='black', fill='transparent'),
        panel.spacing = unit(0, 'mm'), axis.ticks.length = unit(0, "mm"),
        plot.margin=unit(c(0,0,0,0), "mm")) + labs(x=NULL, y=NULL)

# 2 data points plus 2 corner points to define bbox ('limits' args seem to force extra margins)
d = data.frame(x = 1:4, y = c(100,150,250,300), sz = c(0,76.15,76.15,0))

p = p0 + geom_point(data=d, aes(x, y, size=sz), fill='red', stroke=0, shape=22, alpha=.8)

# output to pdf and open
fn='test.pdf'; ggsave(p, filename = fn, w=6, h=4, units = "in"); browseURL(fn)

enter image description here

我通过反复试验达到76.15的大小。这个尺寸只有触及两个方形点,但我不明白为什么。该图是6英寸宽= 152.4毫米。为了满足,这些点必须是2英寸宽= 50.8毫米。但我无法通过.pt乘数(2.845276)看到尺寸76.15如何映射到50.8毫米。

任何建议都非常感谢。我应该补充一点,当使用shape=15而不是22时,相同结果的点大小为67.15,但我不确定这会让我们更接近答案。

1 个答案:

答案 0 :(得分:3)

您可能会发现这个旧帖子很有用:http://r.789695.n4.nabble.com/Fwd-R-size-of-point-symbols-td923507.html

基本上:唯一可用的参考来计算点形状的大小是源代码(src/main/engine.c

case  22: /* squares */
    xc = toDeviceWidth(RADIUS * SQRC * GSTR_0, GE_INCHES, dd);
    yc = toDeviceHeight(RADIUS * SQRC * GSTR_0, GE_INCHES, dd);
    GERect(x-xc, y-yc, x+xc, y+yc, gc, dd);
    break;

形状0,1,4,7,8,10,12,13,14,15,16,18,19,21似乎受到缩小0.75倍的正方形的约束,

enter image description here