Plotly的fillcolor默认为半透明,不需要透明度

时间:2017-11-15 06:50:36

标签: r maps plotly

我正在尝试使用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)

这是我得到的输出: enter image description here

我的问题很容易理解,但我找不到解决这个问题的方法。我希望每个不同县的fillcolor与该县的边界线的蓝色相同。在plotly的文档中,它声明了fillcolor:

fillcolor(颜色)
设置填充颜色。默认为线条颜色,标记颜色或标记线颜色的半透明变体,以可用的为准。

这就是问题所在......我不想要半透明的线条变体,我想要实际的线条颜色!我已经尝试将许多不同的值传递给fillcolor参数,但没有运气。任何帮助都将非常感激!

谢谢!

编辑 - 佛罗里达数据帧上的输出非常大,超出了RStudio控制台的打印输出最大值。这里有一些类似的,可重复的例子 - https://plot.ly/r/county-level-choropleth/

2 个答案:

答案 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 = 00.250.751的结果:

enter image description here

答案 1 :(得分:0)

不修改Plotly中的任何内容,我发现您可以添加

alpha = 1

将add_trace / add_polygons更改为完全不透明。 因此,在您有fillcolor注释的地方,可以插入

alpha = 

然后是0-1,完全透明到完全不透明。