请原谅这篇文章中的任何问题,因为这是我在这里的第一篇文章;尽管如此,请留下建设性的批评。
下面的代码使用ggmosaic
包中的titanic
数据制作了一个条形图,这是我正在制作的其他东西的一个示例,我不想分享。
我试图弄清楚如何编辑列的宽度以匹配Total_In_Class
变量,是否有一种方法可以做到这一点?或者我应该创建一个不同的信息可视化?
library(tidyverse)
library(ggmosaic)
titanic %>%
group_by(Class, Sex, Age, Survived) %>%
tally() %>%
spread(key = Survived, value = n, fill = 0) %>%
mutate(Classification = paste("Class: ", Class, " Sex: ", Sex, " Age: ", Age)) %>%
mutate(Total_In_Class = Yes + No) %>%
mutate(Percent_Survived = Yes / Total_In_Class) %>%
ggplot() +
geom_col(aes(x = Classification, y = Percent_Survived)) +
geom_text(aes(x = Classification, y = Percent_Survived, label = Total_In_Class), vjust = -.3) +
theme(axis.text.x = element_text(angle = -90, vjust = -.05))
字符串
x1c 0d1x的数据
我试过在geom_col()
中使用width
参数,以及在aes()
中包含width = Total_In_Class
,但这两种方法都不起作用。
1条答案
按热度按时间izkcnapc1#
我发现了两种方法:
首先,这里描述了
geom_col
版本:Is it possible to have variable width of bars in geom_col?字符串
x1c 0d1x的数据
请注意
width
的美学。您除以的数字应该将结果数字缩放到0和1之间的某个值,因为这在一定程度上是x
轴下方标签间隔的距离尺度。如果width
是数百个,则所有x
轴刻度将被卷积为中间的一个看似单一的点,因为它们的距离(1-ish)相对于矩形的宽度(100-ish)很小。但是,我仍然对结果不太满意,这不是我们想要的,对吗?我们希望相邻的矩形整齐排列。我发现这种图被称为 * 马赛克图 *。我喜欢把它们想象成具有度量
x
* 和 *y
美学Map的矩形,例如,它们的区域同时显示了两个变量,其中geom_col
只能有一个度量Map,另一个必须是分类的。对于ggplot,有
ggmosaic
。关键的区别:我们不能输入已经tally()
ied的数据,因为它在内部进行计数(就像geom_bar
会做的那样)。所以我们要回到原始的titanic数据集。首先,一个更“成比例”的矩形的演示:(这是从
?geom_mosaic
帮助示例中提取的)。型
的
这是一个更复杂的版本,包含了您要求的所有可能的分类组合。在熟悉
ggmosaic
之后,可能需要进行一些微调,例如将一个因子(例如Age
)移动到一个名为conds = Age
的单独美学中。型
的
为了回到你最初提出的reprex问题的方向,我们可以将
ggmosaic
和你创建的Classification
变量一起使用。型
这是我最喜欢的,因为它实现了我想象的你想要的结果。我想你想用
Survival_Percentage * Total_In_Class
来可视化幸存者的数量作为酒吧的面积。百分比不再是必要的,因为
number of survived * Total_in_Class
给出了与上面相同的相对比例,它作为矩形区域可见。