R 绘图 - 颜色栏中的色阶与绘图中的不同

问题描述 投票:0回答:1

我在 R 中有一个散点图,我想在 1 到 20 的固定比例上为标记着色,其中 1 = 深绿色,20 = 深红色。由于这将是 Shiny 应用程序的一部分,因此我希望能够在保持特定色阶的同时过滤数据。我为此使用 cmin 和 cmax 值。

以下示例有效,但颜色条完全错误:

library(plotly)

data = data.frame(x = seq(1, 20),
                  y = seq(5, 24),
                  z = seq(1, 20)) %>%
  filter(z > 4 & z < 10)

fig <- plot_ly(data) %>%
  add_trace(
    data,
    type = 'scatter',
    mode='markers',
    x = ~x,
    y = ~y,
    color = ~z,
    colors = "RdYlGn",
    marker=list(
      reversescale = T,
      cmin = 1,
      cmax = 20,
      colorbar=list(
        borderwidth = 5,
        outlinewidth = 5,
        title=list(text='abc')
      )
    )
  )

fig

结果:

Plotly scatter plot with wrong colorbar

这里有几个问题。

  • 颜色条没有像图中那样反转。它表示较低的值是红色,较高的值是绿色,而事实恰恰相反。
  • 颜色条显示值在绘图范围内从深红色到深绿色变化。然而,图中的所有值都在浅绿色范围内。
  • 颜色条不会从 1 变为 20,这将是我的首选选项,这样每次应用滤镜时颜色条都不会改变。
  • 可能不相关,但颜色栏选项也不会执行任何操作 - 标题和轮廓宽度未指定。

非常感谢任何帮助!

r plotly scatter-plot colorbar
1个回答
0
投票

您需要进行一些更改:

  • 而不是
    marker = list(reversescale = T)
    你应该使用
    color = list(reversescale = T)
  • colorbar()
    是一个应该在其自己的步骤中发生的函数 - 而不是在
    add_trace()
  • limits
    (在代码中的
    cmin
    cmax
    )移至
    colorbar
    步骤。

下面的代码进行了这些更改,应该可以解决您遇到的问题。

fig <- plot_ly(data) %>%
  add_trace(
    data,
    type = 'scatter',
    mode='markers',
    x = ~x,
    y = ~y,
    color = ~z,
    colors = "RdYlGn",
    color = list(reversescale = T)) %>%
  colorbar(
        limits = c(0, 20),
        borderwidth = 5,
        outlinewidth = 5,
        title=list(text='abc')
      )
© www.soinside.com 2019 - 2024. All rights reserved.