我正在尝试使用plotly在R中构建一个地图。我将在回复此帖子时分享构建数据帧所需的代码。这是我用来绘制图表的代码:
florida %>%
group_by(group) %>%
plot_ly(x = ~long, y = ~lat,
color = ~color_vals, colors = 'Blues') %>%
add_polygons(line = list(width = 2),
# fillcolor = 'WHAT GOES HERE',
opacity = 1, showlegend = FALSE)
我的问题很容易理解,但我找不到解决这个问题的方法。我希望每个不同县的fillcolor与该县的边界线的蓝色相同。在plotly的文档中,它声明了fillcolor:
fillcolor(颜色)
设置填充颜色。默认为线条颜色,标记颜色或标记线颜色的半透明变体,以可用的为准。
这就是问题所在......我不想要半透明的线条变体,我想要实际的线条颜色!我已经尝试将许多不同的值传递给fillcolor参数,但没有运气。任何帮助都将非常感激!
谢谢!
编辑 - 佛罗里达数据帧上的输出非常大,超出了RStudio控制台的打印输出最大值。这里有一些类似的,可重复的例子 - https://plot.ly/r/county-level-choropleth/。
答案 0 :(得分:2)
我在情节上挖了一点,并没有找到直接解决方案。但是,我们可以使用prependContent
包中的函数htmlwidgets
来调整渲染的绘图。
这是一个简单的例子:
library(plotly)
library(dplyr)
library(htmlwidgets)
library(htmltools)
# define utility function to adjust fill-opacity using css
fillOpacity <- function(., alpha = 0.5) {
css <- sprintf("<style> .js-fill { fill-opacity: %s !important; } </style>", alpha)
prependContent(., HTML(css))
}
ggplot2::map_data("world") %>%
group_by(group) %>%
plot_ly(x = ~long, y = ~lat) %>%
add_polygons() %>%
fillOpacity(alpha = 1)
我们基本上将一些CSS注入到widget容器中并使用!important
以确保样式不会被覆盖。
您可以在此处查看alpha = 0
,0.25
,0.75
和1
的结果:
答案 1 :(得分:0)
不修改Plotly中的任何内容,我发现您可以添加
alpha = 1
将add_trace / add_polygons更改为完全不透明。 因此,在您有fillcolor注释的地方,可以插入
alpha =
然后是0-1,完全透明到完全不透明。