ggplot,带误差条的条形图:两个二进制列和一个分类列
ggplot, barplot with error bar: two binary columns and one categorical
亲爱的 Whosebug 会员,
我有一个包含以下内容的数据集:一列 lang
包含五种不同的语言。另外两列 CAN
和 INT
包含 (0, 1)。可以看到数据here
我想为每种语言绘制两个条形图,一个用于 CAN== 0
,另一个用于 CAN==1
。 y 轴应该是 INT
(或 INT==1
)的行数。我希望这些条上有错误条。一些 post 建议使用 melt()
以便将格式转换为长格式。但是,这不起作用,因为我的数据是连续的。
更新
我昨晚看了stat_summary
,也许有用,但我做不到。所以我仍然认为 geom_errorbar
是要走的路,正如最初建议的那样。
首先,为了计算CI我写了一个函数。可能有一个内置的,但我不知道。
BinCI <- function(x) {
p <- mean(x)
s <- sqrt(p * (1 - p) / length(x))
i <- s * 2
i
}
第二次数据操作:
df2 <- unite(df, uLang, c(Lang, CAN), remove = FALSE) %>% # Create the groups
group_by(Lang, uLang) %>%
summarize(prop = mean(INT), ci = BinCI(INT)) # Calculate the mean and CI using the `BinCI` function
Lang uLang prop ci
Ar Ar_0 0.07200000 0.04623972
Ar Ar_1 0.44406780 0.05785682
Kic Kic_0 0.16000000 0.06558048
Kic Kic_1 0.44745763 0.05789989
Sp Sp_0 0.04968944 0.03425168
Sp Sp_1 0.24390244 0.04742311
Yuc Yuc_0 0.16800000 0.06687923
Yuc Yuc_1 0.40780142 0.05852797
Zap Zap_0 0.15151515 0.06241559
Zap Zap_1 0.26785714 0.04831810
三、剧情:
ggplot(df2, aes(uLang, prop, fill = Lang)) +
geom_col() +
geom_errorbar(aes(ymin = prop - ci, ymax = prop + ci), width = 0.3) +
guides(fill = FALSE)
亲爱的 Whosebug 会员,
我有一个包含以下内容的数据集:一列 lang
包含五种不同的语言。另外两列 CAN
和 INT
包含 (0, 1)。可以看到数据here
我想为每种语言绘制两个条形图,一个用于 CAN== 0
,另一个用于 CAN==1
。 y 轴应该是 INT
(或 INT==1
)的行数。我希望这些条上有错误条。一些 post 建议使用 melt()
以便将格式转换为长格式。但是,这不起作用,因为我的数据是连续的。
更新
我昨晚看了stat_summary
,也许有用,但我做不到。所以我仍然认为 geom_errorbar
是要走的路,正如最初建议的那样。
首先,为了计算CI我写了一个函数。可能有一个内置的,但我不知道。
BinCI <- function(x) {
p <- mean(x)
s <- sqrt(p * (1 - p) / length(x))
i <- s * 2
i
}
第二次数据操作:
df2 <- unite(df, uLang, c(Lang, CAN), remove = FALSE) %>% # Create the groups
group_by(Lang, uLang) %>%
summarize(prop = mean(INT), ci = BinCI(INT)) # Calculate the mean and CI using the `BinCI` function
Lang uLang prop ci
Ar Ar_0 0.07200000 0.04623972
Ar Ar_1 0.44406780 0.05785682
Kic Kic_0 0.16000000 0.06558048
Kic Kic_1 0.44745763 0.05789989
Sp Sp_0 0.04968944 0.03425168
Sp Sp_1 0.24390244 0.04742311
Yuc Yuc_0 0.16800000 0.06687923
Yuc Yuc_1 0.40780142 0.05852797
Zap Zap_0 0.15151515 0.06241559
Zap Zap_1 0.26785714 0.04831810
三、剧情:
ggplot(df2, aes(uLang, prop, fill = Lang)) +
geom_col() +
geom_errorbar(aes(ymin = prop - ci, ymax = prop + ci), width = 0.3) +
guides(fill = FALSE)