2016-11-04 88 views
0

我想創建一個交互式陰謀用長方形使用情節在R.保持geom_rect半透明區域,但彩色的輪廓

我有主要想法的工作。然而,我所堅持的是允許每個矩形都有一個彩色輪廓(如數據的「填充」列中所描繪的那樣),而是一個完全透明的區域。

下面是什麼工作的MWE:

library(ggplot2) 
library(dplyr) 
library(plotly) 
set.seed(1) 
data <- data.frame(Name = paste0("Name",seq(1:10)), xmin = runif(10, 0, 1), xmax = runif(10, 1, 2), ymin = runif(10, 0, 1), ymax = runif(10, 1, 2), fill = sample(c("black","purple"),10, replace=TRUE)) 

p <- ggplot(data, aes(xmin = xmin, xmax = xmax, ymin = ymin, ymax = ymax, fill = NULL, colour = fill, text = Name)) + geom_rect(size = 0.3, alpha = 0.5) + scale_colour_identity() + theme_bw() 
ggplotly(p, tooltip = "text") %>% layout(dragmode = "select") 

我可以在每個矩形徘徊,並有向我表示的數據的名稱變量。而且,數據的填充變量決定矩形的顏色。但是,我無法使矩形變得透明。

我嘗試:

1)改變填充= NULL填充= NA,但是這將導致誤差:

Error in seq.default(h[1], h[2], length.out = n) : 
    'to' cannot be NA, NaN or infinite 

2)改變的α= 0.5於α= 0.01,但是這使得每個矩形的輪廓也相當透明。

只有矩形區域完全透明才能創建這種類型的圖形?我真的希望保持矩形的輪廓顏色,並能夠響應不同的alpha值。

如果您對我有任何建議,我會很高興聽到它!

+1

也許'geom_rect(...,補= NA)這樣做' – cuttlefish44

+1

確保你已經做了在'geom_rect'中'fill = NA' *'aes'的外*,如@ cuttlefish44評論所示。 – aosmith

回答

0

其實很簡單。對於填充參數,只需使用fill=alpha("grey",0)的透明顏色作爲geom_rect函數,您將獲得所需的結果。

您可以通過修改代碼如下

p <- ggplot(data, aes(xmin = xmin, xmax = xmax, ymin = ymin, ymax = ymax, colour = "purple", text = Name)) + geom_rect(size = 0.3, alpha = 0.5,fill=alpha("grey",0)) + scale_colour_identity() + theme_bw() 
ggplotly(p, tooltip = "text") %>% layout(dragmode = "select") 

輸出類似於 Output Image

相關問題