如何在 r 中的同一个箱线图中绘制数据框的多列(使用 ggplot2)?
How do you plot multiple columns of a data frame all within the same boxplot in r (using ggplot2)?
我有一个如下所示的数据框:
Train_Table_Time_Power <- data.frame(
Mean = runif(100),
STD = runif(100),
Kurt = runif(100),
Skew = runif(100),
TI = sample(c("0.05", "0.10", "0.15", "0.20"), 10, replace = TRUE)
)
然后我使用以下代码为倾斜特征创建了一个框:
Skew_BoxPlot <- ggplot(Train_Table_Time_Power, aes(x = TI, y = Skew, color = TI)) +
geom_boxplot(notch = T, id=TRUE) +
stat_summary(fun = mean, geom="point", shape=19, color="red", size=2) +
geom_jitter(shape=16, position = position_jitter(0.2), size = 0.3) +
labs(title = "Crest_Time", x = "TI", y = "Normalized Magnitude") +
theme_minimal() + theme_Publication()
上面的箱形图显示了随着 TI 特征的变化,Skew 特征的不同分布。但是,我现在想创建一个新的箱线图,显示所有特征(均值、STD、库尔特和偏斜)的分布,仅针对一个 TI 值,比如 TI = 0.05,我希望绘制该图同一图表上的所有箱线图分布水平排列,彼此相邻。谁能指导我如何最好地完成这项工作?
您可以将数据转换为长 table 然后绘制。使用 tidyverse 这可以轻松完成
library(tidyverse)
Train_Table_Time_Power %>% filter(TI == 0.05) %>%
pivot_longer( cols=1:4) %>%
ggplot(aes(x=name, y=value)) + geom_boxplot()
您可以将 TI == 0.05
更改为您想要的任何值,或者您可以使用所有 TI 值并使用 facet_grid()
分割出各个地块
Train_Table_Time_Power %>% pivot_longer( cols=1:4) %>%
ggplot(aes(x=name, y=value)) + geom_boxplot() +facet_grid(~TI)
我有一个如下所示的数据框:
Train_Table_Time_Power <- data.frame(
Mean = runif(100),
STD = runif(100),
Kurt = runif(100),
Skew = runif(100),
TI = sample(c("0.05", "0.10", "0.15", "0.20"), 10, replace = TRUE)
)
然后我使用以下代码为倾斜特征创建了一个框:
Skew_BoxPlot <- ggplot(Train_Table_Time_Power, aes(x = TI, y = Skew, color = TI)) +
geom_boxplot(notch = T, id=TRUE) +
stat_summary(fun = mean, geom="point", shape=19, color="red", size=2) +
geom_jitter(shape=16, position = position_jitter(0.2), size = 0.3) +
labs(title = "Crest_Time", x = "TI", y = "Normalized Magnitude") +
theme_minimal() + theme_Publication()
上面的箱形图显示了随着 TI 特征的变化,Skew 特征的不同分布。但是,我现在想创建一个新的箱线图,显示所有特征(均值、STD、库尔特和偏斜)的分布,仅针对一个 TI 值,比如 TI = 0.05,我希望绘制该图同一图表上的所有箱线图分布水平排列,彼此相邻。谁能指导我如何最好地完成这项工作?
您可以将数据转换为长 table 然后绘制。使用 tidyverse 这可以轻松完成
library(tidyverse)
Train_Table_Time_Power %>% filter(TI == 0.05) %>%
pivot_longer( cols=1:4) %>%
ggplot(aes(x=name, y=value)) + geom_boxplot()
您可以将 TI == 0.05
更改为您想要的任何值,或者您可以使用所有 TI 值并使用 facet_grid()
分割出各个地块
Train_Table_Time_Power %>% pivot_longer( cols=1:4) %>%
ggplot(aes(x=name, y=value)) + geom_boxplot() +facet_grid(~TI)