我一直在研究ggplot2
中使用的热图,现在我试图将它们转换为ggplotly
,以使用它们构建一个shiny
应用。除了geom_tile
中的alpha美学翻译(如果我use geom_raster
出现同样的问题)之外,其他所有内容都可以(或多或少)正常运行。经过一整天的搜寻和阅读相关答案之后,我还没有找到任何解决方案。
我尝试使用不同的数据和规格,到目前为止完全没有运气。这个问题似乎特定于热图,因为如果我使用geom_point,alpha转换效果很好。问题是,我确实需要进行工作的热图。
我提供了一个可复制的示例来说明问题。
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:
ggplotly:
答案 0 :(得分:1)
我同意plotly::ggplotly()
的翻译不正确。我尝试了ggplot2::geom_rect()
和ggplot2::geom_tile()
以及ggplot2::scale_color_manual()
和ggplot2::scale_color_identity()
的一些变体。
这是一个热图示例,不带ggplot2层而直接编写为plotly。我没有看到直接映射Alpha /不透明度的方法。
如果您不需要在绘图中更改Alpha,仅需要几何尺寸正确,这应该可以满足您的需求。
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值,我猜当前最好的方法是创建一个自定义调色板,该调色板设置rgb a 的所有四个通道。
答案 1 :(得分:1)