首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ggplotly转换alpha美学

使用ggplotly转换alpha美学
EN

Stack Overflow用户
提问于 2019-07-14 20:23:52
回答 2查看 224关注 0票数 1

我一直在使用ggplot2开发热图,现在我正在尝试将它们转换为ggplotly,以便用它们构建一个shiny应用程序。除了geom_tile中alpha美学的翻译(如果我use geom_raster也有同样的问题),所有的东西都工作得很好(或多或少)。经过一整天的搜索和阅读相关的答案,我还没有找到任何解决方案。

我已经尝试了不同的数据和规格,到目前为止还没有任何运气。这个问题似乎是特定于热图的,因为如果我使用geom_point,alpha转换得很好。问题是,我真的需要热图来做我正在做的事情。

我已经制作了一个可重现的例子来说明这个问题。

代码语言:javascript
复制
library(ggplot2)
library(plotly)
library(dplyr)

sample<- data.frame(a = 1:10,
                b = 11:20,
                c = 31:40,
                d = rep(c("a", "b"), 5))


plot <- sample%>%
  ggplot(aes(x=a, y=b, fill = c, alpha = d))+
  geom_raster()

plot

ggplotly(plot)

你会看到输出是完全不同的。有没有什么想法,或者有没有人有类似的问题?

ggplot:

插图:

EN

回答 2

Stack Overflow用户

发布于 2019-07-16 09:05:55

我同意有些东西没有按照plotly::ggplotly()的意图进行翻译。我尝试了ggplot2::geom_rect() & ggplot2::geom_tile()ggplot2::scale_color_manual() & ggplot2::scale_color_identity()的一些变体。

这是一个热图示例,直接写到plotly中,没有ggplot2层。我没有看到一种直接映射alpha/不透明度的方法。

这应该可以满足你的需要,如果你不需要改变阿尔法在情节中,只是需要几何尺寸是正确的。

代码语言:javascript
复制
ds <- tibble::tibble(
  x   =  1:10,
  y   = 11:20,
  z   = 31:40,
  a1  = rep(c("a", "b"), 5),
  a2  = rep(c( .1,   .4), 5)
)

plot_ly(ds) %>% 
  add_heatmap(x = ~x, y = ~y, z = ~z, opacity = .5,  colors = "YlGnBu")

如果您需要改变alpha,我猜当前最好的方法是创建一个自定义调色板来设置rgba的所有四个通道。

票数 1
EN

Stack Overflow用户

发布于 2019-07-18 17:22:48

如果有人遇到类似的问题,我找到了一种方法来解决这个问题(因为这似乎是一个ggplotly的错误),我用geom_point()创建了热图,并调整了点的形状和大小,直到它看起来一样。显然,ggplotly确实很好地翻译了来自geom的alpha aes。

这就是最终的结果(这款闪亮的应用程序的目标是能够选择这些具有参考年份的对角线,以便将它们与其他对角线分开):

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57027384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档