【问题标题】:colors in Plotly 4.x for RR 的 Plotly 4.x 中的颜色
【发布时间】:2016-09-28 15:59:56
【问题描述】:

我使用带有 Shiny 的 R 的新 Plotly (4.x) 包。我正在对我的图表进行分类着色,如果一个类别中只有 1 个项目,则着色退出并出现错误。一个最小的例子如下:

plot_ly(head(iris, 1), 
   x = ~Sepal.Length, y = ~Sepal.Width, color=~Species,      
   colors = setNames("#FF5748", "setosa"),
   type = "scatter", mode = "markers")

if (has_attr(x$type, "colorscale")) x[["z"]] else NULL 中的错误:参数长度为零

colorsvector 是我的命名向量,其中名称指的是物种并选择了适当的颜色,如果每个物种存在多个项目,则始终正确,例如:

plot_ly(iris[c(1,60),], 
    x=~Sepal.Length, y=~Sepal.Width, color=~Species, 
    colors=setNames(c("#FF5748", "black"), c("setosa", "versicolor")),
    type="scatter", mode="markers")

这是一个情节错误还是我遗漏了什么?

谢谢!

编辑:更准确地说,这个问题经常发生在生成子图并且子图只有1个数据点时:

colormap <- setNames(c("#FF5748", "black"), c("setosa", "versicolor"))
data <- iris[c(1,2,60), ]

# vars contains the facet variables
vars <- levels(factor(data$Species))

# build a list of length(var) plots
plots <- lapply(vars, function(species) {
  data <- subset(data, Species==species)
  plot_ly(data, x=~Sepal.Length, y=~Sepal.Width) %>%
    add_bars(color=~Species, colors=colormap) 
})

p <- subplot(plots, nrows = length(plots), shareX = TRUE, titleX = FALSE)

此代码会产生错误,而使用 color = factor(data$Species) 可以正常工作。谢谢dww!

【问题讨论】:

  • 删除标签shiny - 这只是一个情节问题
  • 在下面查看我的答案 - 据我所知,这是一个错误。我在github.com/plotly/plotly.js/issues 找不到相关问题,所以我建议在此链接上打开错误报告

标签: r plotly


【解决方案1】:

我可以确认复制此问题。它发生在

  1. 数据只有一行,
  2. 并且color = 参数被传递给plot_lyadd_trace
  3. 并且用于颜色的列具有不存在的因子水平

我们可以看到复制问题需要这些标准中的第三个,因为这会产生错误:

pdata = head(iris, 1)
plot_ly(pdata, x = ~Sepal.Length, y = ~Sepal.Width,
          color = pdata$Species,
          colors = setNames("#FF5748", "setosa"),
          type = "scatter", mode = "markers")

但这不是:

plot_ly(pdata, x = ~Sepal.Length, y = ~Sepal.Width, 
         color = factor(pdata$Species),      
         colors = setNames("#FF5748", "setosa"),
         type = "scatter", mode = "markers")

这看起来像一个错误。目前,您可以使用上面重构颜色列的第二个结构来回避这个问题。请注意,您需要使用$ 表示法而不是~ 来引用该列。

更新

Bug 现已在最新的 github 提交中得到修复 https://github.com/ropensci/plotly/commit/724b440578f954593e9d6ce555bca8b143fc9e6d

【讨论】:

  • 谢谢,你是个天才。有了这个提示,代码就可以工作了。这个问题在生成子图时经常发生,我用问题代码编辑了我的原始问题。再次感谢!
  • 这很快 - 错误已在 github github.com/ropensci/plotly/commit/… 的当前 master 上修复(打开问题后 1/2 小时)
猜你喜欢
  • 1970-01-01
  • 2016-06-06
  • 1970-01-01
  • 2015-11-24
  • 2021-12-26
  • 2019-03-15
  • 1970-01-01
  • 1970-01-01
  • 2018-11-07
相关资源
最近更新 更多