【发布时间】: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 找不到相关问题,所以我建议在此链接上打开错误报告