我认为geom_rect()
可能比geom_point()
更合适.为了使这一点起作用,首先需要确定绘图的左/右、顶部/底部是什么.下面,我们通过找到一个类别的符号来实现这一点.
library(ggplot2)
df <- data.frame (col = c("A","A","B","B"),
row = c("C", "D","C","D"),
val = c(4,10,29,31))
df <- transform(
df,
sign_col = ifelse(col == "A", -1, 1),
sign_row = ifelse(row == "C", -1, 1)
)
然后你可以将符号与坐标相乘,得到你想要的图.
ggplot(df) +
geom_rect(
aes(xmin = 0, xmax = sign_col * val,
ymin = 0, ymax = sign_row * val,
fill = factor(val))
) +
geom_text(
aes(label = val,
x = 0.5 * sign_col * val,
y = 0.5 * sign_row * val)
) +
geom_hline(yintercept = 0) +
geom_vline(xintercept = 0) +
coord_equal()
由reprex package(v2.0.0)于2022-07-01创建