我正在尝试使data.frame彼此并排放置两列的条形图。我尝试过:
barplot(data.frame$data1, data.frame$data2, data=data.frame)
here is data:
Neutral Emotional
1 0.790 1.6400
2 0.051 0.0880
3 0.891 2.7200
4 0.430 1.1800
5 -0.009 -0.6000
但是它产生大量的条形,而不仅仅是两个。我正在尝试创建两个条形,一个是中性色,一个代表SEM的情感和错误条形。
答案 0 :(得分:1)
一种选择是将gather
转换为'long'格式,然后使用geom_bar
中的ggplot2
library(tidyverse)
library(ggplot2)
gather(df1) %>%
ggplot(., aes(x = key, y = value)) +
geom_bar(stat = 'identity')
如果我们还需要一个错误栏,那么
gather(df1) %>%
ggplot(., aes(x = key, y = value)) +
stat_summary(fun.y = mean, geom = "bar") +
stat_summary(fun.data = mean_se, geom = "errorbar")
df1 <- structure(list(Neutral = c(0.79, 0.051, 0.891, 0.43), Emotional = c(1.64,
0.088, 2.72, 1.18)), class = "data.frame", row.names = c("1",
"2", "3", "4"))
答案 1 :(得分:1)
讨论实现此结果的方法in this guide。请注意,他们推荐ggplot2
胜过barplot
。
要获得带有平均值平均值标准误差的误差线的图表:
library(tidyverse)
data.frame %>%
gather(Var, Val) %>%
group_by(Var) %>%
summarise(Mean = mean(Val),
SD = sd(Val),
SE = SD/sqrt(n())) %>%
ggplot(aes(Var, Mean)) +
geom_col() +
geom_errorbar(aes(ymin = Mean - SE,
ymax = Mean + SE),
width = 0.5)
结果:
但是:请注意,数据可视化专家并未充分理解所谓的“炸药图”。对于少量样本,最好使用geom_boxplot
或geom_jitter
显示范围。
箱线图:
data.frame %>%
gather(Var, Val) %>%
ggplot(aes(Var, Val)) +
geom_boxplot()
均值抖动:
data.frame %>%
gather(Var, Val) %>%
ggplot(aes(Var, Val)) +
geom_jitter(width = 0.2) +
stat_summary(geom = "crossbar",
fun.y = mean,
fun.ymax = mean,
fun.ymin = mean,
color = "red",
width = 0.4)