Hen*_*rik 10 plot r alignment ggplot2
背景:
我有一种甘特图,由水平段组成,不同的事件用不同形状的符号标记.我希望符号与段具有完全相同的高度(下一个问题的潜在主题!),符号应在每个段中居中对齐.
问题:
问题是不同的形状似乎有不同的对齐方式.在我的小例子中,shape
0,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)
我也拼命尝试了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" - 我错过了任何关键字吗?
问题: 如何在不进行硬编码的情况下对齐不同的形状?
这不是一个真正的答案,但不符合评论.
对我来说,圆圈并不比正方形差,看着前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;