簡體   English   中英

在 ggplotly 中使用 alpha 和手動顏色

[英]Using alpha and manual colours with ggplotly

我無法使用ggplotly設置手動顏色。

library(ggplot2)
library(plotly)

set.seed(1)
data.frame(x = 1:10, y = rnorm(10)) %>%

  ggplot(aes(x, y, fill = factor(x > 5), alpha = y)) + 
  geom_bar(stat = "identity") +
  scale_fill_manual(values = c("red", "blue"))

ggplotly()

我收到錯誤:

Error in setNames(as.numeric(x), c("red", "green", "blue", "alpha")) : 
  'names' attribute [4] must be the same length as the vector [1]

帶回溯:

14: setNames(as.numeric(x), c("red", "green", "blue", "alpha"))
13: FUN(X[[i]], ...)
12: lapply(X = X, FUN = FUN, ...)
11: sapply(valz, function(x) {
        x <- setNames(as.numeric(x), c("red", "green", "blue", "alpha"))
        x[["alpha"]] <- x[["alpha"]] * 255
        do.call(grDevices::rgb, c(x, list(maxColorValue = 255)))
    })
10: rgb2hex(x[idx])
9: toRGB(aes2plotly(data, params, "fill"), aes2plotly(data, params, 
       "alpha"))
8: geom2trace.GeomBar(dots[[1L]][[1L]], dots[[2L]][[1L]], dots[[3L]][[1L]])
7: (function (data, params, p) 
   {
       UseMethod("geom2trace")
   })(dots[[1L]][[1L]], dots[[2L]][[1L]], dots[[3L]][[1L]])
6: mapply(FUN = f, ..., SIMPLIFY = FALSE)
5: Map(geom2trace, dl, paramz[i], list(p))
4: layers2traces(data, prestats_data, panel$layout, p)
3: gg2list(p, width = width, height = height, tooltip = tooltip, 
       source = source)
2: ggplotly.ggplot()
1: ggplotly()

使用ggplotly時設置 alpha 和填充/顏色的正確方法是什么? 當未使用alpha或未手動設置顏色時,不會出現該錯誤。

我相信它的alpha = y這就是問題所在。

library(plotly)

# Generate sample data
df <- data.frame(x = 1:10,
                 y = sample(1:5, size = 10, replace = T),
                 col = sample(LETTERS[1:4], size = 10, replace = T))

第一個 geom_point (工作正常)

# ggplot2 syntax
ggplot(df, aes(x, y, color = col, alpha = y)) +
  geom_point()

ggplotly()

在此處輸入圖片說明

下一個 geom_bar(中斷)

ggplot(df, aes(x, y, fill = col, alpha = y)) +
  geom_bar(stat = "identity")

ggplotly()

在此處輸入圖片說明

使用 alpha 作為因子修改 geom_bar(有效)

ggplot(df, aes(x, y, fill = col, alpha = factor(y))) +
  geom_bar(stat = "identity")

ggplotly()

在此處輸入圖片說明

我相信這與plotly.js alpha被指定為一組離散值時,每個條形都被繪制為單獨的軌跡,整個軌跡具有指定的 alpha 值,而不是特定的標記。

在此處輸入圖片說明

我認為條形圖目前不支持一組連續的 alpha 值,因為它確實適用於散點圖。

希望這可以幫助...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM