向 plot_ly 标记添加分类颜色会反转显示点的大小

Posted

技术标签:

【中文标题】向 plot_ly 标记添加分类颜色会反转显示点的大小【英文标题】:Adding a categorical color to plot_ly markers invert the size of the points displayed 【发布时间】:2018-07-25 05:06:38 【问题描述】:

我正在尝试使用plotly 绘制一个图,其颜色代表某个类别(在我的示例中为ff)和代表人口规模的大小(在我的示例中为ss 列)。使用恒定颜色进行绘图使图形正常,即点的大小具有代表性。但是,如果我将color=~ff 参数添加到调用中,显示的尺寸会发生变化并且看起来是倒置的!

这是一个回复:

# preparing the session and data:
library(plotly)
dd <- data.frame(
  xx = rnorm(10),
  yy = rnorm(10),
  ff = as.factor(c("a","b","c","a","b","c","a","a","b","c")),
  ss = round(runif(10, 100,1000))
)

第一个没有颜色参数的图:

pp1 <- plot_ly(data = dd,
              x = ~xx,
              y = ~yy,
              marker = list(sizeref = mean(dd$ss)/25,
                            size= ~ss ,
                            sizemode= "diameter",
                            mode = "markers")
              ) 
add_markers(pp1,mode = "markers")

注意:我设置sizeref 的方式可能看起来很奇怪,但这是我发现在我的真实代码中使我的大小漂亮的唯一方法,因为人口大小变化很大。我认为这会导致我的问题,但可能因此我决定将其保留在我的示例中

这给出:

现在当我添加 color 参数时:

pp2 <- plot_ly(data = dd,
              x = ~xx,
              y = ~yy,
              color = ~ff,  ####  !!!  The only line difference
              marker = list(sizeref = mean(dd$ss)/25,
                            size= ~ss ,
                            sizemode= "diameter",
                            mode = "markers")
) 
add_markers(pp2,mode = "markers")

给予:

颜色还可以,但尺寸发生了变化,似乎倒置了。

知道我做错了什么吗?会不会是 sizeref 参数随后按类别 ff 应用?如果是,如何处理?

【问题讨论】:

【参考方案1】:

我不确定您是如何设置 sizeref,但您是否尝试过:

plot_ly(data = dd, x = ~xx, y = ~yy, color = ~ff, size= ~ss) %>% 
add_markers(marker = list(sizeref = 3, sizemode= "diameter"))

【讨论】:

它有效,谢谢。它没有解释为什么它会反转标记的大小,但至少我现在可以继续前进。 最后,您的修复只能部分起作用。在这个例子中它有效,但它并没有在我的实际数据中修复它,这些数据有来自不同类的一个微小观察。 (添加dd &lt;- rbind(dd, data.frame(xx=-.5, yy=1.5, ff="d", ss=100)))。我会看看我能做什么,我可能会问一个后续问题。还是谢谢。 很有趣,但如果你添加第二个 d, dd 似乎是一个错误 (github.com/ropensci/plotly/issues/1198),我将加倍积分来解决问题(将两个相同的点放在另一个上面)。它可能不优雅,但它应该可以解决我的问题。

以上是关于向 plot_ly 标记添加分类颜色会反转显示点的大小的主要内容,如果未能解决你的问题,请参考以下文章

r plot_ly scatter 中的自定义颜色范围

百度地图里的标记点能改颜色么 怎么改

标记指定颜色

如何根据 y 位置动态更改标记点的颜色

在 R 中的 plot_ly (plotly) 中获取 ylim

用highcharts做了一个曲线图,每个点的颜色不同,想添加一个图例来显示每个颜色代表的含义,请问怎么做呢