R ggplot2:了解点大小

R ggplot2:了解点大小,r,ggplot2,R,Ggplot2,我试图理解ggplot/grid如何确定要渲染的点大小。(来自哈德利的评论)描述了.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(a

我试图理解ggplot/grid如何确定要渲染的点大小。(来自哈德利的评论)描述了
.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)

通过反复试验,我得到了76.15码的尺码。这个尺寸让两个正方形的点刚好接触,但我不明白为什么。绘图宽度为6英寸=152.4毫米。要满足要求,这些点必须为2英寸宽=50.8mm。但是我看不出76.15的大小如何通过
.pt
乘数(2.845276)映射到50.8mm


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

您可能会发现这条旧线索有用:

基本上:计算点形状大小的唯一可用参考是源代码()

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


喵喵叫里普利教授!我同样很难理解上面的内容,除了半径是0.375,SQRC是sqrt(pi/4)
toDeviceWidth
行(
result=(result/dd->dev->ipr[0])/fabs(dd->dev->right-dd->dev->left);
)超出了我的范围。你的ggplot2点想法有什么用吗?IIRC我确实用正多边形制作了一个几何图形(在所谓的ggExtra包中,现已退役),但它不是非常有用。干杯,伙计。我想就我目前的目的而言,我会假设一个点到英寸的乘数是38.075,然后看看结果如何。
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;