绘制具有相同颜色的子图线

Posted

技术标签:

【中文标题】绘制具有相同颜色的子图线【英文标题】:plotly subplot lines with same color 【发布时间】:2021-09-16 22:24:25 【问题描述】:

我有一些跨多个类别的时间序列数据,其中每个类别都有一组产品的子集,我想将它们绘制在一个绘图子图中,以便每个产品线具有相同的颜色。我该怎么做?

我尝试在 colors 参数中指定一个不起作用的调色板,我还尝试使用 expand_grid 为每个类别“填充”缺少的产品,但这也不起作用。最后我尝试了两种方法的组合,但仍然无效。

以下是该问题的玩具数据集。正如您在图例组中看到的那样,每个类别的线条颜色不同。

data <- expand_grid(Category = c(LETTERS[1:3]), Product = letters[1:5], date = seq.Date(as.Date("2020-01-01"), as.Date("2020-12-31"), by = 7)) %>% 
  mutate(y_value = rnorm(nrow(.), 50, 25)) %>% 
  filter(!paste0(Category, Product) %in% c("Ab","Bd","Ce","Ca"))

data %>% 
  group_by(Category) %>% 
  do(
    plot = plot_ly(data = ., x=~date, y = ~ y_value, color = ~Product, legendgroup = ~ Product) %>% 
      add_lines(hoverinfo = "text", text = ~ paste0("Category: ", Category, "<br>", "Product: ", Product)) %>% 
      add_annotations(text = ~Category, x = 0.5,y = ~ max(y_value), xref = "paper",showarrow = FALSE)
  ) %>% 
  subplot(nrows = 3, shareX = TRUE, shareY = FALSE)

【问题讨论】:

【参考方案1】:

您可以使用颜色向量的命名向量为您的产品分配颜色并将其传递给plot_lycolors 参数,如下所示:

library(plotly)
library(tidyr)

data <- expand_grid(Category = c(LETTERS[1:3]), Product = letters[1:5], date = seq.Date(as.Date("2020-01-01"), as.Date("2020-12-31"), by = 7)) %>% 
  mutate(y_value = rnorm(nrow(.), 50, 25)) %>% 
  filter(!paste0(Category, Product) %in% c("Ab","Bd","Ce","Ca"))

colors <- c("a" = "blue", "b" = "red", c = "green", d = "orange", e = "purple")
data %>% 
  group_by(Category) %>% 
  do(
    plot = plot_ly(data = ., x=~date, y = ~ y_value, color = ~Product, colors = colors, legendgroup = ~ Product) %>% 
      add_lines(hoverinfo = "text", text = ~ paste0("Category: ", Category, "<br>", "Product: ", Product)) %>% 
      add_annotations(text = ~Category, x = 0.5,y = ~ max(y_value), xref = "paper",showarrow = FALSE)
  ) %>% 
  subplot(nrows = 3, shareX = TRUE, shareY = FALSE)

【讨论】:

完美。在闪亮的应用程序中像魅力一样工作并很好地扩展 不客气。如果您仍然需要调色板,那么这可能会有所帮助:r-charts.com/color-palettes/#discrete。

以上是关于绘制具有相同颜色的子图线的主要内容,如果未能解决你的问题,请参考以下文章

次要情节之外的主要人物图例

Plotly:热图颜色图例我的子图

在绘制颜色条时强制使用方形子图

Plotly:如何获取跟踪颜色属性以绘制具有相同颜色的选定标记?

Python使用matplotlib函数subplot可视化多个不同颜色的折线图为指定的子图添加图例信息(legend)

如何使用 R 中的 ggplot 绘制具有相同颜色的填充点和置信椭圆?