барплот не подходит для вашей проблемы, так как у вас есть несколько средств для каждого QR.Для вас больше подходит коробочный участок, особенно если у вас тысячи рядов.Если имя вашего фрейма данных df
, вот код:
boxplot(mean ~ QR,
data=df,
main = "Mean vs QR",
xlab = "QR",
ylab = "Mean",
col = "Blue"
)
, который показывает этот график:

РЕДАКТИРОВАТЬ:
Если вы действительно хотите отобразить гистограмму, вы можете, но вам придется отображать стандартное отклонение пяти категорий QR.Вы можете использовать код этой темы , который дает нам этот код:
df_QR1 <- subset(df, subset = (QR==1))
df_QR2 <- subset(df, subset = (QR==2))
df_QR3 <- subset(df, subset = (QR==3))
df_QR4 <- subset(df, subset = (QR==4))
df_QR5 <- subset(df, subset = (QR==5))
mean_1 <- mean(df_QR1$mean)
sd_1 <- sd(df_QR1$mean)
mean_2 <- mean(df_QR2$mean)
sd_2 <- sd(df_QR2$mean)
mean_3 <- mean(df_QR3$mean)
sd_3 <- sd(df_QR3$mean)
mean_4 <- mean(df_QR4$mean)
sd_4 <- sd(df_QR4$mean)
mean_5 <- mean(df_QR5$mean)
sd_5 <- sd(df_QR5$mean)
means <- c(mean_1, mean_2, mean_3, mean_4, mean_5)
sds <- c(sd_1, sd_2, sd_3, sd_4, sd_5)
names(means) <- c("QR1", "QR2", "QR3", "QR4", "QR5")
names(sds) <- c("QR1", "QR2", "QR3", "QR4", "QR5")
bar_plot <- barplot(height = means,
main = "Mean vs QR",
xlab = "QR",
ylab = "Mean",
col = "Blue",
ylim=c(0, max(means)+max(sds))
)
arrows(x0=bar_plot, y0=means+sds, x1=bar_plot, y1=means-sds,angle=90,code=3)
и вот график: 