我有一个数据框pp
,其中包含一个变量nearby_distance
,我希望将其映射到alpha
aes,使nearby_distance
的值等于{{1}对应于完全可见性,0
接近无穷大的值对应于接近完全透明度的alpha。
我可以定义一个新变量nearby_distance
并使用pp$alphavar <- exp(-pp$nearby_distance)
作为我的alphavar
aes。这种方法可以满足我所需的转换,但是图中显示的图例不是有意义的单位。如何创建一个手动alpha刻度来完成所需的转换?
感谢。
答案 0 :(得分:4)
制作包含x
,y
和nearby_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')