如何在我的条形图中叠加单个数据点
How to overlay individual data points in my barplot
我想分别在条形图的每个条形图中打印单个数据点。其中每个条是该类别的平均值
我想要这个输出:
我从 excel sheet
导入的数据集看起来像这样
# A B C D E
1 3 3 2 2 2
2 NA 2 NA 3 1
3 1 3 3 1 1
library(readxl)
library(ggplot2)
Book1 <- read_excel("C:/Users/helix/Desktop/Book1.xlsx")
x_row = names(Book1)
y_val = colMeans(Book1, na.rm = TRUE)
sd_val = sapply(Book1, sd, na.rm = TRUE)
df = data.frame(x_name = x_row, mean=y_val, sd = sd_val)
ggplot(df, aes(x= x_row, y = y_val )) +
geom_bar(stat = 'identity')+
geom_errorbar(aes(ymin=mean-sd, ymax=mean+sd), width=.2)
您可以将 Book1 数据集添加到 ggplot 命令,方法是先旋转它,然后使用 geom_point
:
Book1 <- pivot_longer(Book1, cols = everything())
ggplot() +
geom_bar(aes(x= x_row, y = y_val), df, stat = 'identity') +
geom_errorbar(aes(x = x_row, ymin=mean-sd, ymax=mean+sd), df, width=.2) +
geom_point(aes(x = name, y = value, color = name), Book1, size = 5)
数据
df <- read.table(header = T, text = "id A B C D E
1 3 3 2 2 2
2 NA 2 NA 3 1
3 1 3 3 1 1")
Book1 <- df[,-1]
x_row = names(Book1)
y_val = colMeans(Book1, na.rm = TRUE)
sd_val = sapply(Book1, sd, na.rm = TRUE)
df = data.frame(x_name = x_row, mean=y_val, sd = sd_val)
[![library(tidyverse)
Book1<- data.frame(A= c(3, NA, 1),
B= c(3,2, 3),
C= c(2, NA, 3),
D= c(2, 3, 1),
E= c(2, 1, 1)
)
x_row = names(Book1)
y_val = colMeans(Book1, na.rm = TRUE)
sd_val = sapply(Book1, sd, na.rm = TRUE)
df = data.frame(x_name = x_row, mean=y_val, sd = sd_val)
round(df$mean, digits = 2)-> df$mean
ggplot(df, aes(x= x_row, y = y_val,fill = x_row )) +
geom_bar(stat = 'identity')+
geom_errorbar(aes(ymin=mean-sd, ymax=mean+sd), width=.2)+
geom_text(aes(label = mean), vjust = -0.4, hjust= -0.2)][1]][1]
我想分别在条形图的每个条形图中打印单个数据点。其中每个条是该类别的平均值
我想要这个输出:
我从 excel sheet
导入的数据集看起来像这样# A B C D E
1 3 3 2 2 2
2 NA 2 NA 3 1
3 1 3 3 1 1
library(readxl)
library(ggplot2)
Book1 <- read_excel("C:/Users/helix/Desktop/Book1.xlsx")
x_row = names(Book1)
y_val = colMeans(Book1, na.rm = TRUE)
sd_val = sapply(Book1, sd, na.rm = TRUE)
df = data.frame(x_name = x_row, mean=y_val, sd = sd_val)
ggplot(df, aes(x= x_row, y = y_val )) +
geom_bar(stat = 'identity')+
geom_errorbar(aes(ymin=mean-sd, ymax=mean+sd), width=.2)
您可以将 Book1 数据集添加到 ggplot 命令,方法是先旋转它,然后使用 geom_point
:
Book1 <- pivot_longer(Book1, cols = everything())
ggplot() +
geom_bar(aes(x= x_row, y = y_val), df, stat = 'identity') +
geom_errorbar(aes(x = x_row, ymin=mean-sd, ymax=mean+sd), df, width=.2) +
geom_point(aes(x = name, y = value, color = name), Book1, size = 5)
数据
df <- read.table(header = T, text = "id A B C D E
1 3 3 2 2 2
2 NA 2 NA 3 1
3 1 3 3 1 1")
Book1 <- df[,-1]
x_row = names(Book1)
y_val = colMeans(Book1, na.rm = TRUE)
sd_val = sapply(Book1, sd, na.rm = TRUE)
df = data.frame(x_name = x_row, mean=y_val, sd = sd_val)
[![library(tidyverse)
Book1<- data.frame(A= c(3, NA, 1),
B= c(3,2, 3),
C= c(2, NA, 3),
D= c(2, 3, 1),
E= c(2, 1, 1)
)
x_row = names(Book1)
y_val = colMeans(Book1, na.rm = TRUE)
sd_val = sapply(Book1, sd, na.rm = TRUE)
df = data.frame(x_name = x_row, mean=y_val, sd = sd_val)
round(df$mean, digits = 2)-> df$mean
ggplot(df, aes(x= x_row, y = y_val,fill = x_row )) +
geom_bar(stat = 'identity')+
geom_errorbar(aes(ymin=mean-sd, ymax=mean+sd), width=.2)+
geom_text(aes(label = mean), vjust = -0.4, hjust= -0.2)][1]][1]