给定两个具有相同名称的列,如何在 R 中并排绘制两个同名的箱线图?

问题描述 投票:0回答:1

我的 ggplot 有问题。假设我有数据框“df_temp”,我想绘制 7 列的箱线图。但是,第二列和第三列具有相同的名称“B”。如何在 x 轴字母“B”处绘制两个箱线图(与第二列和第三列相关)?我附上玩具示例的代码。 感谢任何可以帮助我的人!

df_temp <- data.frame(
  A = c(0.206, 0.192, 0.187, 0.213, 0.167, 0.209, 0.213, 0.155, 0.190, 0.192),
  B = c(0.260, 0.210, 0.215, 0.280, 0.271, 0.230, 0.232, 0.238, 0.220, 0.278),
  B = c(0.185, 0.276, 0.233, 0.225, 0.239, 0.242, 0.231, 0.195, 0.198, 0.200),
  C = c(0.204, 0.246, 0.212, 0.252, 0.209, 0.244, 0.206, 0.212, 0.210, 0.276),
  D = c(0.218, 0.201, 0.230, 0.189, 0.241, 0.193, 0.225, 0.198, 0.239, 0.199),
  E  = c(0.275, 0.268, 0.257, 0.273, 0.258, 0.262, 0.210, 0.274, 0.285, 0.306),
  F  = c(0.234, 0.239, 0.213, 0.233, 0.250, 0.217, 0.253, 0.217, 0.277, 0.221))

library(reshape2)
df_long <- melt(df_temp)

library(ggplot2)
ggplot(data = df_long, aes(x = variable, y = value)) + 
  geom_boxplot(width = 0.5, outliers = FALSE) +
  ylab("Value") +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 0, hjust = 0.5, size = 12), text = element_text(size = 14)) +
  theme(axis.text.y = element_text(angle = 0, hjust = 0.5, size = 12)) +
  theme(plot.title = element_text(hjust = 0.5)) +
  theme(axis.text.x = element_blank(), axis.ticks.x = element_blank(), axis.title.x = element_blank()) +
  theme(axis.text.x = element_text(size = 12, angle = 90, hjust = 0.5)) +
  coord_cartesian(ylim = c(0.17, 0.45)) 
r ggplot2 boxplot
1个回答
1
投票

一种简单/快速而肮脏的方法是仅重命名 B 列,并在其后面留一个空格:

df_temp <- data.frame(
  A = c(0.206, 0.192, 0.187, 0.213, 0.167, 0.209, 0.213, 0.155, 0.190, 0.192),
  B = c(0.260, 0.210, 0.215, 0.280, 0.271, 0.230, 0.232, 0.238, 0.220, 0.278),
  B = c(0.185, 0.276, 0.233, 0.225, 0.239, 0.242, 0.231, 0.195, 0.198, 0.200),
  C = c(0.204, 0.246, 0.212, 0.252, 0.209, 0.244, 0.206, 0.212, 0.210, 0.276),
  D = c(0.218, 0.201, 0.230, 0.189, 0.241, 0.193, 0.225, 0.198, 0.239, 0.199),
  E  = c(0.275, 0.268, 0.257, 0.273, 0.258, 0.262, 0.210, 0.274, 0.285, 0.306),
  F  = c(0.234, 0.239, 0.213, 0.233, 0.250, 0.217, 0.253, 0.217, 0.277, 0.221))

names(df_temp)[3] <- "B "

df_long <- reshape2::melt(df_temp)

您的

ggplot
代码将输出:

enter image description here

最好看看“上游”,看看是什么导致名称相同。在 R 中,这种情况非常罕见 - 即使在您提供的示例数据中,它也不会以相同的名称命名它们(它创建

B
B.1
命名列)。

© www.soinside.com 2019 - 2024. All rights reserved.