[英]Convert alpha aesthetics with ggplotly
我一直在使用ggplot2
使用熱圖,現在我正嘗試將它們轉換為ggplotly
以使用它們構建shiny
應用程序。 除了geom_tile
中的alpha美學翻譯(如果我use geom_raster
, geom_tile
同樣的問題)之外,其他所有內容都可以正常運行( 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:
我同意plotly::ggplotly()
並未按預期翻譯某些內容。 我嘗試了ggplot2::geom_rect()
和ggplot2::geom_tile()
和ggplot2::scale_color_manual()
和ggplot2::scale_color_identity()
。
這是不帶ggplot2層而直接編寫為散點圖的熱圖示例。 我沒有看到直接映射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的所有四個通道。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.