如何在 R 中的矩阵内绘制半圆?

How to plot half circles within a matrix in R?

我正在使用 R 绘制受 up/down 调控的基因计数矩阵,其中 y 轴表示类别,x 轴表示每次处理中的计数。这是我用 corrplot 绘制的矩阵结构的示例:

corrplot 的矩阵图

我希望每个单元格都有一个分割圆图,而不是像上图那样在每个单元格中绘制完整的圆。一半包含“向上”类型的值,另一半包含“向下”类型的值。

使用此 post 作为圆图的 ,我已经能够绘制圆,但我正在努力将其变成类似矩阵的图形。这是一些示例数据:

df <- data.frame(category = rep(c("A", "B"), each = 2),
             type = rep(c("up", "down"), 4),
             treatment = rep(c("treat1", "treat2", "treat3", "treat4"), each = 4),
             count = c(19419, 1132, 8138, 947, 8349, 436, 789, 1580))

df$treatment <- as.factor(df$treatment)

library(ggplot2)
ggplot(df, aes(x=category, y=sqrt(count), fill=type)) + geom_col(width =1) +
  coord_polar(theta = "x", direction = -1) +
  facet_wrap(category~treatment) +
  theme_void()

如何将这些圆圈排列成类似矩阵的图形?如何在矩阵的每个单元格内绘制拆分圆?

如有任何建议,我们将不胜感激。非常感谢!!

ggplot(df, aes(x=category, y=sqrt(count), fill=type)) + geom_col(width =999, position="dodge") +
  coord_polar(theta = "x", direction = -1, start=pi/2) +
  facet_grid(category~treatment) +
  theme_void()

旋转绘图并使上下部分在不同方向绘制