我想根据高血压、意识、治疗和控制将我的数据集绘制成 4 个不同的图表:
我正在尝试在堆叠条形图上绘制图表,年龄类别位于我的 x 轴上。 我想复制下图:
我正在寻找在 1 x 轴类别“18-34、35-39...”下绘制 Hypertension_Male 和 Hypertension_Female 图表的解决方案
任何帮助都会非常有帮助!谢谢!
我尝试创建一个堆积条形图,但它总是变成错误,我每个图表只能使用 1 个数据列。
您问题中所需的图是dodged条形图,而不是stacked条形图。
目前您的数据格式不适合绘图。理想情况下,所有数字都应位于一列中,然后您可以有一列用于性别,一列用于绘图显示的变量。这称为旋转为长格式。
完成后,我们可以将填充美学设置为性别,并在
position = 'dodge'
中指定geom_col
。要获得所有四个图,我们可以根据另一个变量进行分面。
library(tidyverse)
df %>%
pivot_longer(-1, names_sep = '_', names_to = c('plot', 'gender')) %>%
ggplot(aes(age_category, value, fill = gender)) +
geom_col(position = 'dodge') +
facet_wrap(~plot) +
scale_fill_manual(values = c('#e87a30', '#4868b0')) +
theme_minimal() +
theme(legend.position = 'top',
panel.grid = element_blank(),
strip.text = element_text(size = 14, face = 2)) +
labs(x = NULL, y = NULL, fill = NULL)
使用的数据 - 通过 OCR 从相关图片中获取
df <- structure(list(age_category = c("18-34", "35-39", "40-44", "45-49",
"50-54", "55-59", "60-64", "=65"), Hypertension_Male = c(4.681518,
10.197145, 9.954751, 12.210309, 18.281037, 17.910448, 21.917808,
28.461649), Hypertension_Female = c(7.570484, 15.567641, 20.633484,
24.517906, 21.964529, 27.951153, 26.849315, 27.484472), Awareness_Male = c(7.524809,
10.026385, 10.35503, 10.75, 19.661017, 17.456621, 17.696629,
22.638869), Awareness_Female = c(22.01705, 26.12137, 34.91124,
37.5, 30.84746, 37.86962, 34.83146, 28.19444), Treatment_Male = c(5.539773,
8.443272, 9.171598, 10.25, 15.932203, 15.976331, 16.011236, 20.555556
), Treatment_Female = c(17.75568, 23.48285, 30.47337, 34, 28.13559,
34.31953, 32.30337, 24.72222), Control_Male = c(14.63141, 12.396694,
9.701493, 7.990605, 11.538462, 6.470588, 11.627907, 12.576687
), Control_Female = c(42.682693, 28.09917, 29.10448, 22.59887,
23.07692, 25.86253, 20.34884, 13.49693)), class = "data.frame", row.names = c(NA,
-8L))