使用“plot_ly”的线条和标记的自定义颜色问题

Posted

技术标签:

【中文标题】使用“plot_ly”的线条和标记的自定义颜色问题【英文标题】:Problem with custom colors for both lines and markers with `plot_ly` 【发布时间】:2020-12-14 23:02:49 【问题描述】:

假设我想为线条+标记情节使用自定义颜色。 使用plot_ly()colorscolor 参数非常简单,但是一旦我想自己修改标记(使用marker 参数)我遇到了困难并且没有找到帮助来解决这个问题具体问题在网上。 谁能告诉我我做错了什么?

# Underlying data
tmp <- mpg %>%
  group_by(class,manufacturer) %>%
  summarise(models=n())

# Works as expected
tmp %>% 
  plot_ly(x=~manufacturer, 
          y=~models, 
          group=~class,
          type="scatter",
          color=~class, 
          colors = scales::hue_pal()(length(n_distinct(tmp$class))), #ggplot colors
          mode="lines+markers")

# Issue with markers > idea behind is to have a white center and a marker line with the same color as the line itself
tmp %>% 
  plot_ly(x=~manufacturer, 
          y=~models, 
          group=~class,
          type="scatter",
          color=~class, 
          colors = scales::hue_pal()(n_distinct(tmp$class)),
          marker = list(color = 'rgba(255, 255, 255, 1)',
                        line = list(color = scales::hue_pal()(n_distinct(tmp$class)))),
          mode="lines+markers")

【问题讨论】:

【参考方案1】:

这可能看起来有点奇怪,但在您的情况下,非常简单的解决方案是放弃:

line = list(color = scales::hue_pal()(n_distinct(tmp$class))))

并且只包括:

line = list(width = 3)

这是你现在的情节:

完整代码:

# Underlying data
tmp <- mpg %>%
  group_by(class,manufacturer) %>%
  summarise(models=n())


# Issue with markers > idea behind is to have a white center and a marker line with the same color as the line itself
tmp %>% 
  plot_ly(x=~manufacturer, 
          y=~models, 
          group=~class,
          type="scatter",
          color=~class, 
          colors = scales::hue_pal()(n_distinct(tmp$class)),
          marker = list(color = 'rgba(255, 255, 255, 1)',
                        line = list(width = 3)),
          mode="lines+markers")
tmp

【讨论】:

您好,谢谢您的回答。如果我想使用另一种颜色而不是曲线颜色怎么办?比方说黑?即我应该如何自定义标记线颜色?编辑 > 我认为 width = 2 默认情况下 ;-) @yahman269 line = list(color='black', width = 3)) 会将所有标记线设置为黑色。如果您想了解更多详细信息,请考虑提出一个新问题。只需参考这个问题,然后从那里开始。 我的问题与最初的主题有关,但没有被正确问到:这里的诀窍是不要为line 提供颜色参数,好的,但是如果你想要自定义颜色怎么办?

以上是关于使用“plot_ly”的线条和标记的自定义颜色问题的主要内容,如果未能解决你的问题,请参考以下文章

向 plot_ly 标记添加分类颜色会反转显示点的大小

R Plotly中的自定义颜色

Matplotlib中的颜色、线条、标记样式汇总

Plotly Dash 图例中的自定义标记

Flutter GoogleMaps - 自定义标记的动态着色

google maps iOS SDK:用作标记的自定义图标