我有一个数据帧 pp
,其中包含一个变量 nearby_distance
,我希望将其映射到 alpha
aes,这样 nearby_distance
等于 0
的值对应于完全可见性,而接近无穷大的 nearby_distance
值对应于接近完全透明的 alpha。
我可以定义一个新变量 pp$alphavar <- exp(-pp$nearby_distance)
并使用 alphavar
作为我的 alpha
aes。这种方法可以满足我需要的转换,但图中显示的图例不会以有意义的单位表示。我如何创建一个手动 alpha 比例来完成这个所需的转换?
谢谢。
最佳答案
制作包含 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')
关于r - 手动 alpha 比例 exp(-x),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14309953/