Plotly - 调整自定义颜色的透明度

问题描述 投票:0回答:1

我想调整绘图中线条的透明度/alpha。
我无法使用

add_series
,因为此图表在 Shiny 应用程序中使用,并且数据不断变化,因此必须需要在以下数据中的
random_z
变量上完成拆分:

library(plotly)

set.seed(1)

x <- c(1:100)
random_y <- rnorm(100, mean = 0)
data <- data.frame(x, random_y, random_z = rep(c('A', 'B'), times = 50))

plot_ly(
  data, 
  x = ~x, 
  y = ~random_y,
  mode = 'lines',
  color = ~random_z,
  colors = c("A" = 'red',
             "B" = adjust_transparency('blue', 0.1)
             )
)

无需任何透明度调整即可显示颜色。 将

adjust_transparency('blue', 0.1)
更改为
toRGB('blue', 0.1)
会导致错误:“错误:未知颜色名称:rgba(0,0,255,0.1)”。

如有任何帮助,我们将不胜感激。

r plotly visualization
1个回答
0
投票

for
循环可以与
add_series
以及包含颜色的命名向量结合使用,以实现所需的结果。
(即使底层数据发生变化,这也有效 - 非常适合闪亮的应用程序)

library(plotly)

set.seed(1)

x <- c(1:100)
random_y <- rnorm(100, mean = 0)
data <- data.frame(x, random_y, random_z = rep(c('A', 'B'), times = 50))

pal <- c(toRGB("red"), toRGB("blue", alpha = 0.1))
pal <- setNames(pal, c("A", "B"))


p <- plot_ly()

for(cols in unique(data$random_z)){
  p <- p %>% 
    add_trace(
    data = data %>% filter(random_z == cols), 
    x = ~x, 
    y = ~random_y,
    mode = 'lines',
    name = cols,
    line = list(color = pal[[cols]])
  )
}
p
© www.soinside.com 2019 - 2024. All rights reserved.