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

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

谢谢。

最佳答案

制作包含 xynearby_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/

10-13 00:32