如何判断一个类别的观察数量

时间:2017-09-18 04:18:43

标签: r graph

我正在从纸张数据表中制作图表。它有一列关系类别,然后是两列数字变量:每个类别的观察数量,然后是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并不是这个有限数据集的合适图形,但我不知道如何显示(数字〜分类)。欢迎提出建议!

提前感谢您的任何建议!

1 个答案:

答案 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()

enter image description here

或绘制每个答案的百分比:

首先计算百分比:

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()

enter image description here