R - plotly / ggplot2 - 在分组的箱形图上动态更改颜色

时间:2017-06-27 11:40:51

标签: r plotly

我有一组数据结构如下:

names       data        behaviour   timeOrder
(str)       (float)     (str)       (int)

userName1   0.542       green       1
userName1   0.456       green       1
userName1   0.514       red         2
userName1   0.625       blue        3
userName2   0.465       blue        3
userName2   0.635       red         1
userName2   0.464       red         1
.....

每个用户在三个条件(行为b1 / 2/3)中都有一个数据集,这些条件在实验中以不同的顺序发生(3,1,2 / 2,3,1 ....)

我想为每个用户表示三个数据箱图的集合,以timeOrder告知的顺序显示,但是由它代表的行为着色

(x轴中的用户名,y轴上的boxplot)

我设法用条形图表示,并且表示如下所示的值,但我的方法不适用于数据集

same principle with barplot

这可能吗?目前我实现了打印与

分组的三个箱图
  p <- plot_ly(usersDataFrames, x = ~userName, y = ~data, type = "box",color = ~behaviour) %>%
      layout(boxmode = "group")

但不会手动管理颜色

感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

一种可以接近所需输出的方法是在ggplot2中使用 facets 并将timeOrder转换为系数,因此按顺序绘制。

使用scale_fill_manual(),您可以定义用于填充箱图的颜色到您选择的任何颜色。在这种情况下,红色,绿色和蓝色。

以下内容将在一行中为每个用户创建一个facet网格。

ggplot(df, aes(x = factor(timeOrder), y = data, fill = behaviour)) +
  geom_boxplot() +
  facet_grid(.~names) +
  scale_fill_manual(values = c("red", "green", "blue"))