我无权访问您的数据。所以我决定使用 plotly 包中的教程数据来演示如何使用 viridis 颜色。
连续变量
如果您阅读 plot_ly() 的帮助页面,您会看到 colors 被指定为 colorbrewer2.org 调色板名称(例如“YlOrRd”或“Blues”),或以十六进制插值的颜色向量"#RRGGBB" 格式,或 colorRamp() 等颜色插值函数。您可以做的是使用 viridisLite 包中的magma() 创建一个颜色矢量。这里我指定了colors = magma(50, alpha = 1, begin = 0, end = 1, direction = 1)。 n = 50 表示我想要颜色向量中有 50 种颜色。您想为自己的情况使用这个数字。
library(dplyr)
library(viridis)
library(plotly)
df <- read.csv("https://raw.githubusercontent.com/plotly/datasets/master/2011_us_ag_exports.csv")
df$hover <- with(df, paste(state, '<br>', "Beef", beef, "Dairy", dairy, "<br>",
"Fruits", total.fruits, "Veggies", total.veggies,
"<br>", "Wheat", wheat, "Corn", corn))
# give state boundaries a white border
l <- list(color = toRGB("white"), width = 2)
# specify some map projection/options
g <- list(scope = 'usa',
projection = list(type = 'albers usa'),
showlakes = TRUE,
lakecolor = toRGB('white'))
p <- plot_geo(df, locationmode = 'USA-states') %>%
add_trace(z = ~total.exports,
text = ~hover,
locations = ~code,
color = ~total.exports,
colors = magma(50, alpha = 1, begin = 0, end = 1, direction = 1)) %>%
colorbar(title = "Millions USD") %>%
layout(title = '2011 US Agriculture Exports by State<br>(Hover for breakdown)',
geo = g)
分类变量
发布我的答案后,我以为您使用的是分类变量。我玩了这个例子,并认为在情节中创建一个带有这样一个变量的叶绿素图是很棘手的。至少,我可以根据分类变量为多边形分配颜色,但是颜色条以一种有趣的方式出现。所以我删除了它。 (如果有人可以改进这部分,请这样做。)
使用相同的数据,我做了以下事情。我在 dplyr 包中使用 ntile() 创建了一个分类变量。我在total.exports 中随机创建了 9 个关卡。然后,我使用magma() 创建了九种颜色。当我绘制下面的地图时,我使用了colors = foo[df$export_nth]。这基本上是使用foo 创建 50 种颜色。 export_nth 用作索引号。我希望这能帮助您思考如何解决您的问题。
mutate(df, export_nth = ntile(x = total.exports, n = 9)) -> df
# Create a magma color vector
foo <- magma(n = 9, alpha = 1, begin = 0, end = 1, direction = 1)
p <- plot_geo(df, locationmode = 'USA-states') %>%
add_trace(z = ~export_nth,
text = ~hover,
locations = ~code,
colors = foo[df$export_nth],
color = ~export_nth,
showscale = FALSE) %>%
layout(title = '2011 US Agriculture Exports by State<br>(Hover for breakdown)',
geo = g)