簡體   English   中英

使用ggplotly轉換Alpha美學

[英]Convert alpha aesthetics with ggplotly

我一直在使用ggplot2使用熱圖,現在我正嘗試將它們轉換為ggplotly以使用它們構建shiny應用程序。 除了geom_tile中的alpha美學翻譯(如果我use geom_rastergeom_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:

ggplot

ggplotly:

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的所有四個通道。

萬一有人遇到類似的問題,我找到了解決方法(這似乎是ggplotly的錯誤),方法是使用geom_point()創建熱圖,並調整點的形狀和大小,直到看起來相同為止。 顯然,ggplotly確實很好地轉換了該幾何圖形的alpha aes。

這是最終結果(閃亮的應用程序的目的是能夠選擇一個具有參考年份的對角線以將其與其他對角線隔離):

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM