4

我有一个数据框pp,其中包含一个nearby_distance我想映射到alphaaes 的变量,这样nearby_distance等于的值0对应于完全可见性,nearby_distance接近无穷大的值对应于接近完全透明的 alpha。

我可以定义一个新变量pp$alphavar <- exp(-pp$nearby_distance)alphavar用作我的alphaaes。这种方法可以满足我需要的转换,但图中显示的图例不会是有意义的单位。我怎样才能创建一个手动的 alpha 比例来完成这个所需的转换?

谢谢。

4

1 回答 1

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')

具有自定义 alpha 缩放的示例图

于 2013-01-14T07:09:30.793 回答