我正在从纸张数据表中制作图表。它有一列关系类别,然后是两列数字变量:每个类别的观察数量,然后是iq相关性:
relation num corr
spouse 3817 0.33
MZ-twin-tog 4671 0.86
MZ-twin-ap 65 0.72
DZ-twin-tog 5546 0.6
sib-tog 26473 0.47
sib-ap 203 0.24
off-par 8433 0.42
off-midpar 992 0.5
off-par-ap 814 0.22
我想制作一个(corr~关系)的箱线图,但我希望宽度与每个类别的观测数量成比例。不幸的是,varwidth = TRUE不起作用,因为我实际上每个类别只有一个观察值,因为我没有使用完整的数据集。
有没有人知道如何使用这个,因为我没有完整的数据,只有结果。
P.S。我知道boxplot并不是这个有限数据集的合适图形,但我不知道如何显示(数字〜分类)。欢迎提出建议!
提前感谢您的任何建议!
答案 0 :(得分:0)
数据:
df1 <- structure(list(relation = structure(c(9L, 3L, 2L, 1L, 8L, 7L,
5L, 4L, 6L), .Label = c("DZ-twin-tog", "MZ-twin-ap", "MZ-twin-tog",
"off-midpar", "off-par", "off-par-ap", "sib-ap", "sib-tog", "spouse"
), class = "factor"), num = c(3817L, 4671L, 65L, 5546L, 26473L,
203L, 8433L, 992L, 814L), corr = c(0.33, 0.86, 0.72, 0.6, 0.47,
0.24, 0.42, 0.5, 0.22), num_pct = c(0.0748225977182734, 0.0915631003254009,
0.00127416003450033, 0.108715254635982, 0.518935978358882, 0.00397929980005489,
0.165307562629866, 0.019445642372682, 0.015956404124358)), .Names = c("relation",
"num", "corr", "num_pct"), row.names = c(NA, -9L), class = "data.frame")
考虑这样的条形图(我在两个图上都将corr
映射为颜色):
require(ggplot2)
g1 <- ggplot(df1, aes(relation, num))+
geom_bar(aes(fill=corr),stat="identity")+
theme_bw()
或绘制每个答案的百分比:
首先计算百分比:
df1$num_pct <- df1$num/sum(df1$num)
然后绘制:
g2 <- ggplot(df1, aes(relation, num_pct))+
geom_bar(aes(fill=corr),stat="identity")+
scale_y_continuous(labels=scales::percent)+
theme_bw()