在绘图R中映射标记大小时出现虚假警告

时间:2018-10-07 20:45:35

标签: r plotly r-plotly

简单散点图具有映射到标记/点大小的第三个变量。该图对我来说看起来很完美,但它会发出有关多个值的警告。每个 x y 值都只有一个 size 值。

除了禁止显示警告外,还可以重新指定此图形以使其不引发警告吗?

Warning message:
`line.width` does not currently support multiple values.

代码:

plotly::plot_ly(
  data  = iris, 
  x     = ~Sepal.Length, 
  y     = ~Petal.Length, 
  size  = ~Sepal.Width,
  type  = 'scatter', 
  mode  = 'markers'
)

图: scatterplot

注意:这可能与Plotly R - error "`line.width` does not currently support multiple values."Scatter mapbox in shiny R will not render有关,但是这些问题还有很多动人之处,所以我不知道这是否是他们的核心问题。

编辑:此后,我将此问题发布到了https://github.com/ropensci/plotly/issues/1367

2 个答案:

答案 0 :(得分:2)

我主要在Python中使用Plotly,所以我不确定细节,但是size是Plotly中许多东西的属性。我猜测是通过在该级别设置size = ~Sepal.Width,库无法知道您要设置标记的大小。

plotly::plot_ly(
    data   = iris, 
    x      = ~Sepal.Length, 
    y      = ~Petal.Length,
    type   = 'scatter', 
    mode   = 'markers',
    marker = list(
        size = ~Sepal.Width*3
    )
)

这对我有用,由于某些原因,这些点变小了很多,但按比例缩放效果很好。

答案 1 :(得分:1)

我也有同样的问题。如此处建议的那样,在可打印的github页面上查找:https://www.reddit.com/r/RStudio/comments/9xq4gv/plotly_api_error_client_error_400_bad_request/,并搜索错误,将我引导到产生该错误的代码:

# if fill does not exist, `size` controls line.width
      if (!has_fill(trace) && has_attr(type, "line")) {
        s <- if (isSingular) size_ else if (array_ok(attrs$line$width)) sizes else NA
        if (is.na(s)) {
          warning("`line.width` does not currently support multiple values.", call. = 
    FALSE)
        } else {
          trace[["line"]] <- modify_list(list(width = default(s)), trace[["line"]])
        }
      }

参数填充默认为“无”。将其设置为空字符串,然后在标记中设置
sizemode = ~diameter对我来说很有效:

plotly::plot_ly(
data   = iris, 
x      = ~Sepal.Length, 
y      = ~Petal.Length,
type   = 'scatter', 
mode   = 'markers',
size = ~Sepal.Width,
fill = ~'',
marker = list(sizemode = 'diameter'))