r 中的箱线图 - 如何绘制具有两列的图(一列的值指的是不同的类别)
Boxplot in r - how to plot having two columns (one with values referring to different categories)
所以我想绘制一个箱线图。我有 10 个问题,200 个人回答了这 10 个问题。我根据这些数据对两列进行了编码。一列包含值(从 1 到 7 - 每个参与者对给定问题给出的答案),第二列包含每个问题的名称(第一个 200 次,第二个 200 次,第三个 200 次,依此类推) .所以它看起来像这样:
Question Value
First 3
Second 7
Third 4
Fourth 3
...
Tenth 1
First 5
Second 6
我一直在尝试使用 ggplot 绘制箱线图,但主要问题是我想在 y 轴上显示问题名称,在 x 轴上显示均值和 SD,但均值应该是仅指给定的问题(即,我想在图中显示所有参与者回答第一、第二等问题的均值)。我尝试使用一些功能,例如:
ggplot(data=data, aes(x=data$Value(by='data$Question'), y=data$Question)) + geom_boxplot()
或
ggplot(data=data, aes(x=data$Value~data$Question, y=data$Question)) + geom_boxplot()
但一直在为整个 data$Value 列计算均值,而不区分哪些值指的是哪个问题。我如何告诉 R 绘制这样的箱线图:
Example
提前致谢!
试试这个:
标准箱线图:
ggplot(data, aes(Question, Value)) +
geom_boxplot() +
coord_flip()
均值-SD-箱线图:
data%>%
group_by(Question) %>%
summarise(mean = mean(Value), sd = sd(Value)) %>%
ggplot(aes(x = Question, y = Value)) +
geom_crossbar(aes(ymin = mean - sd, ymax = mean + sd), size = .5, width = 0.5) +
geom_linerange(aes(ymin = mean - 2 * sd, ymax = mean - sd), size = .5) +
geom_linerange(aes(ymin = mean + sd, ymax = mean + 2 * sd), size = .5) +
coord_flip()
使用 mtcars
作为示例数据:
library(ggplot2)
library(dplyr)
mtcars %>%
group_by(cyl) %>%
summarise(mean = mean(mpg), sd = sd(mpg)) %>%
ggplot(aes(x = factor(cyl), y = mean)) +
geom_crossbar(aes(ymin = mean - sd, ymax = mean + sd), size = .5, width = 0.5) +
geom_linerange(aes(ymin = mean - 2 * sd, ymax = mean - sd), size = .5) +
geom_linerange(aes(ymin = mean + sd, ymax = mean + 2 * sd), size = .5) +
coord_flip()
由 reprex package (v0.3.0)
于 2020-03-23 创建
所以我想绘制一个箱线图。我有 10 个问题,200 个人回答了这 10 个问题。我根据这些数据对两列进行了编码。一列包含值(从 1 到 7 - 每个参与者对给定问题给出的答案),第二列包含每个问题的名称(第一个 200 次,第二个 200 次,第三个 200 次,依此类推) .所以它看起来像这样:
Question Value
First 3
Second 7
Third 4
Fourth 3
...
Tenth 1
First 5
Second 6
我一直在尝试使用 ggplot 绘制箱线图,但主要问题是我想在 y 轴上显示问题名称,在 x 轴上显示均值和 SD,但均值应该是仅指给定的问题(即,我想在图中显示所有参与者回答第一、第二等问题的均值)。我尝试使用一些功能,例如:
ggplot(data=data, aes(x=data$Value(by='data$Question'), y=data$Question)) + geom_boxplot()
或
ggplot(data=data, aes(x=data$Value~data$Question, y=data$Question)) + geom_boxplot()
但一直在为整个 data$Value 列计算均值,而不区分哪些值指的是哪个问题。我如何告诉 R 绘制这样的箱线图:
Example
提前致谢!
试试这个:
标准箱线图:
ggplot(data, aes(Question, Value)) +
geom_boxplot() +
coord_flip()
均值-SD-箱线图:
data%>%
group_by(Question) %>%
summarise(mean = mean(Value), sd = sd(Value)) %>%
ggplot(aes(x = Question, y = Value)) +
geom_crossbar(aes(ymin = mean - sd, ymax = mean + sd), size = .5, width = 0.5) +
geom_linerange(aes(ymin = mean - 2 * sd, ymax = mean - sd), size = .5) +
geom_linerange(aes(ymin = mean + sd, ymax = mean + 2 * sd), size = .5) +
coord_flip()
使用 mtcars
作为示例数据:
library(ggplot2)
library(dplyr)
mtcars %>%
group_by(cyl) %>%
summarise(mean = mean(mpg), sd = sd(mpg)) %>%
ggplot(aes(x = factor(cyl), y = mean)) +
geom_crossbar(aes(ymin = mean - sd, ymax = mean + sd), size = .5, width = 0.5) +
geom_linerange(aes(ymin = mean - 2 * sd, ymax = mean - sd), size = .5) +
geom_linerange(aes(ymin = mean + sd, ymax = mean + 2 * sd), size = .5) +
coord_flip()
由 reprex package (v0.3.0)
于 2020-03-23 创建