首页 文章

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

提问于
浏览
2

我正在尝试使用plotly在R中构建一个 Map . 我将在回复此帖子时分享构建数据帧所需的代码 . 这是我用来绘制图表的代码:

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

    我在情节上挖了一点,并没有找到直接解决方案 . 但是,我们可以使用 htmlwidgets 包中的函数 prependContent 来调整渲染的绘图 . 这是一个简单的例子:

    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

  • 2

    第一次海报,很长一段时间潜伏在我身边 -
    没有在Plotly中修改任何内容,我发现你可以添加

    alpha = 1
    

    add_trace / add_polygons将其更改为完全不透明 . 所以,如果你有fillcolor评论,你可以参加

    alpha =
    

    那么0-1,完全透明,完全不透明 .

相关问题