对齐不同的绘图形状

Hen*_*rik 10 plot r alignment ggplot2

背景:

我有一种甘特图,由水平段组成,不同的事件用不同形状的符号标记.我希望符号与段具有完全相同的高度(下一个问题的潜在主题!),符号应在每个段中居中对齐.

问题:

问题是不同的形状似乎有不同的对齐方式.在我的小例子中,shape0,3,4,5是中心对齐的(左起第四个符号).相反,圆和两个三角形是偏移的.

d1 <- data.frame(x = -1, xend = 7, y = 1, yend = 1)
d2 <- data.frame(x = 0:6, y = 1)

library(ggplot2)
ggplot(data = d1, aes(x = x, y = y)) +
  geom_segment(aes(xend = xend, yend = yend), size = 8, color = "grey80") +
  geom_segment(aes(xend = xend, yend = yend), color = "red") +
  geom_point(data = d2, shape = c(0, 3, 4, 5, 1, 2, 6), size = 8) +
  theme_void()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

放大PDF输出: 在此输入图像描述


我也拼命尝试了geom_text与unicode符号的等价物.然而,这种对齐现在更难以理解.

geom_text(data = d2,
          label = c("\u25A1", "\uFF0B","\u2715","\u25C7", "\u25CB", "\u25B3", "\u25BD"),
          size = 8, vjust = "center") 
Run Code Online (Sandbox Code Playgroud)

没有明显的暗示?geom_point,?aes_linetype_size_shape?pch.我用google搜索"r plot align align justify symbol shape pch" - 我错过了任何关键字吗?


问题: 如何在不进行硬编码的情况下对齐不同的形状?

Rol*_*ASc 6

这不是一个真正的答案,但不符合评论.

对我来说,圆圈并不比正方形差,看着前26个符号(pch = 0:25),似乎(理论上,不确定各种设备)只有三角形不适合你的目的.
我认为它们代表的点位于它们的质量中心通常是合理的,因为这是眼睛期望它与这些符号的最常见用例.

大众中心的证据在这里:https: //github.com/wch/r-source/blob/91dda45a5e4e418d0efed17db858736a973d4996/src/main/engine.c

void GESymbol(...

case 2: /* S triangle - point up */
        xc = RADIUS * GSTR_0;
        r = toDeviceHeight(TRC0 * xc, GE_INCHES, dd);
        yc = toDeviceHeight(TRC2 * xc, GE_INCHES, dd);
        xc = toDeviceWidth(TRC1 * xc, GE_INCHES, dd);
        xx[0] = x; yy[0] = y+r;
        xx[1] = x+xc; yy[1] = y-yc;
        xx[2] = x-xc; yy[2] = y-yc;
        gc->fill = R_TRANWHITE;
        GEPolygon(3, xx, yy, gc, dd);
        break;
Run Code Online (Sandbox Code Playgroud)

所以你当然可以修改这里的来源说:

yy[0] = y + (r+yc)/2;

yy[1] = y - (r+yc)/2;

yy[2] = y - (r+yc)/2;