繁体   English   中英

你如何 plot 数据框的多列都在 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()

上面的方框 plot 显示了随着 TI 特性的变化,Skew 特性的不同分布。 但是,我现在想创建一个新框 plot,它仅显示一个 TI 值(例如 TI = 0.05)的所有特征(均值、STD、Kurt 和偏斜)的分布,我希望该图为 plot所有框 plot 水平分布在同一图表上,彼此相邻。 谁能指导我如何最好地做到这一点?

您可以将您的数据转换成一个长表,然后 plot。 使用 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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM