首页 > 解决方案 > 在R中制作一个四象限比例面积图

问题描述

我正在寻找一种方法,使用 ggplot2 或网格来制作如下图所示的图表。我可以在 Tableau 中重新创建它,但不确定在 R 中从哪里开始(数据设置、包)。重新创建它的任何帮助都会很棒!我希望将来能使用这样的图表。

4象限正方形面积比例图

标签: rggplot2grid

解决方案


您可以尝试使用此功能。

four_quadrant <- function(x, col_quad="gray65", col_text="white") {    
  nx <- length(x)
  sqx <- sqrt(x) 
  df <- data.frame(x=c(sqx[1],-sqx[2],-sqx[3],sqx[4])/2, 
                   y=c(sqx[1],sqx[2],-sqx[3],-sqx[4])/2, 
                   size=sqx, label=x)
  mm <- max(df$size)*1.1

  ggplot(data=df, aes(x=x, y=y, width=size, height=size, 
            group=factor(size))) +
    geom_tile(fill=col_quad) +
    geom_text(aes(label=label), col=col_text, size=5) +
    geom_hline(aes(yintercept=0), size=0.8) +
    geom_vline(aes(xintercept=0), size=0.8) +
    coord_fixed() +
    xlim(c(-mm,mm)) + ylim(c(-mm,mm)) +
    theme_void() +
    theme(legend.position = "none")
}

x <- c(18, 54, 5, 15)
p1 <- four_quadrant(x)

x <- c(30, 17, 6, 34)
p2 <- four_quadrant(x, col_quad="salmon")

gridExtra::grid.arrange(p1, p2, nrow=1)

在此处输入图像描述


推荐阅读