首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用alpha和手动颜色与ggplotly

使用alpha和手动颜色与ggplotly
EN

Stack Overflow用户
提问于 2016-05-28 03:07:13
回答 1查看 846关注 0票数 1

我很难用ggplotly设置手动颜色。

代码语言:javascript
复制
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()

我知道错误:

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

有追溯力:

代码语言:javascript
复制
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或不手动设置颜色,则不存在此错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-28 11:10:01

我相信alpha = y才是问题所在。

代码语言:javascript
复制
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 (工作良好)

代码语言:javascript
复制
# ggplot2 syntax
ggplot(df, aes(x, y, color = col, alpha = y)) +
  geom_point()

ggplotly()

下一次geom_bar (中断)

代码语言:javascript
复制
ggplot(df, aes(x, y, fill = col, alpha = y)) +
  geom_bar(stat = "identity")

ggplotly()

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

代码语言:javascript
复制
ggplot(df, aes(x, y, fill = col, alpha = factor(y))) +
  geom_bar(stat = "identity")

ggplotly()

我相信这与plotly.js有关。当alpha被指定为一组离散值时,每个条都被绘制为一个单独的跟踪,为整个跟踪指定一个alpha值,而不是特定的标记。

我认为条形图目前不支持连续的alpha值集,因为它确实适用于散点图。

希望这能帮上忙。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37494785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档