【问题标题】:Plotly's fillcolor defaults to half-transparency, want no-transparencyPlotly 的填充颜色默认为半透明,想要不透明
【发布时间】:2017-11-15 06:50:36
【问题描述】:

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

这是我得到的输出:

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

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

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

谢谢!

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

【问题讨论】:

    标签: r maps plotly


    【解决方案1】:

    我对情节进行了一些研究,但没有找到直接的解决方案。但是,我们可以使用 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 注入到小部件容器中并使用!important 以确保样式不会被覆盖。

    在这里您可以看到alpha = 0、0.25、0.75 和1 的结果:

    【讨论】:

    • 哪个包提供了fillOpacity使用的HTML功能?
    • 对不起htmltools
    【解决方案2】:

    没有在Plotly中修改任何东西,我发现你可以添加

    alpha = 1
    

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

    alpha = 
    

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

    【讨论】:

      猜你喜欢
      • 2018-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-26
      • 1970-01-01
      • 2020-06-19
      相关资源
      最近更新 更多