我在 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
结果:
这里有几个问题。
非常感谢任何帮助!
您需要进行一些更改:
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')
)