r - 在R中制作一个四象限比例面积图
问题描述
我正在寻找一种方法,使用 ggplot2 或网格来制作如下图所示的图表。我可以在 Tableau 中重新创建它,但不确定在 R 中从哪里开始(数据设置、包)。重新创建它的任何帮助都会很棒!我希望将来能使用这样的图表。
解决方案
您可以尝试使用此功能。
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)
推荐阅读
- scala - 我可以通过一些训练有素的变压器改变火花管道阶段吗?
- javascript - 如何在 Preact 和没有构建工具的情况下使用 useState 钩子?
- r - 创建自己的函数时出现错误消息:
- firebase - 使用 FireBase,我如何检查用户名是否可用于注册?
- python - 如何检查python模块中的变量
- excel - VBA SensitivityLabel 无法访问
- racket - 球拍中的相交矩形
- node.js - 与使用 VSCode 的团队一起开发 React App,当我保存代码时,我看不到更新,但我的队友可以看到他们的更新
- prolog - 我需要在序言中找到同年开始的节目对
- python - Pandas:如何在 DF 中找到换行符?