2013-01-14 52 views
4

我有一個數據幀pp是包含變量nearby_distance我想被映射到alpha AES使得nearby_distance等於0的值對應於滿可視性和nearby_distance的值接近無限對應於接近完全透明度的alpha。說明書alpha規模EXP(-x)

我可以定義一個新變量pp$alphavar <- exp(-pp$nearby_distance)並使用alphavar作爲我的alpha aes。這種方法可以滿足我需要的轉換,但情節中顯示的圖例不會有意義的單位。我怎樣才能創建一個手動的alpha比例來完成這個想要的轉換?

謝謝。

回答

4

製作包含x,ynearby_distance值的樣本數據幀。

pp<-data.frame(x=1:200,y=1:200,nearby_distance=seq(0,9.95,0.05)) 

有定義庫scales你自己的價值觀的轉變,如果現有的滿足您的需求的非(見?trans)的可能性。因此,不需要在原始數據框中進行轉換。使用轉換,值被轉換,然後用於繪圖和定義中斷。然後這些休息時間被轉換成傳說中的標籤。

library(ggplot2) 
library(scales) 

negexp_trans <- function(){ 
    trans_new('negexp', function(x) exp(-x), function(x) -log(x)) 
} 

用於scale_alpha_continuous()中的新轉換得到陰謀。

ggplot(pp,aes(x,y,alpha=nearby_distance))+geom_point(size=5) + scale_alpha_continuous(trans = 'negexp') 

example plot with custom alpha scaling