R:Plotly - 在一个图中创建多个箱图作为一个组

时间:2016-11-16 02:08:59

标签: r plotly

我有一个类似于250 ID的数据集

ID A_Male A_Female B_Male B_Female C_Male C_Female
1    25     75      40     60        20    80
2    30     70      50     50        80    20
3    50     50      30     70        20    80

我想在A,B,C的R分组中使用plotly创建一个boxplot。我的箱图应该如下所示(样本图)。

Required Boxplot

但我没有可变列来对此进行分组。

有没有办法可以使用plot_ly包在R中创建它? 感谢。

2 个答案:

答案 0 :(得分:4)

您可以在绘制之前使用tidyrdplyr包对数据进行一些处理来执行此操作。假设您的数据框为df

library(dplyr)
library(tidyr)
library(plotly)

plot_data <- df %>%
  gather(variable, value, -ID) %>%
  separate(variable, c("group","gender"), sep = "\\_")

然后,您可以使用plot_data使用plot.ly创建包含新组和性别变量的箱图。

plot_ly(plot_data, x = ~group, y = ~value, color = ~gender, type = "box") 

答案 1 :(得分:2)

您可以简单地尝试这一点(其中df是您提供的样本数据,开头):

df <- melt(df, id='ID')
df[c('type', 'gender')] <- do.call(rbind, strsplit(as.character(df$variable), split='_'))

plot_ly(df, x = type, y = value, color = gender, type = "box") %>% 
         layout(boxmode = "group", 
         xaxis = list(title=''), 
         yaxis = list(title='Percentage (%)'))

enter image description here