gpt4 book ai didi

r - 转换色标,但使用 ggplot2 保留一个不错的图例

转载 作者:行者123 更新时间:2023-12-03 20:53:34 28 4
gpt4 key购买 nike

我看到过一些类似的问题,但我想尽可能直接地问我的具体问题:

我有一个散点图,其中“z”变量编码为色标:

library(ggplot2)
myData <- data.frame(x = rnorm(1000),
y = rnorm(1000))
myData$z <- with(myData, x * y)

badVersion <- ggplot(myData,
aes(x = x, y = y, colour = z))
badVersion <- badVersion + geom_point()
print(badVersion)

产生这个: bad version

如您所见,由于“z”变量是正态分布的,因此很少有点用分布的“极端”颜色着色。这是应该的,但我有兴趣强调差异。一种方法是使用:
betterVersion <- ggplot(myData,
aes(x = x, y = y, colour = rank(z)))
betterVersion <- betterVersion + geom_point()
print(betterVersion)

产生这个: better version

通过将 rank() 应用于“z”变量,我更加强调“z”变量内的细微差异。人们可以想象在这里使用任何转换,而不是排名,但你明白了。

我的问题是,从本质上讲,在保持原始单位(z 的单位,而不是 z 的等级)中获得图例的最直接方式或最“真正的 ggplot2”方式是什么,同时保持有色点?

我有一种感觉,这以某种方式使用了 rescaler(),但我不清楚如何将 rescaler() 用于任意转换等。一般来说,更清晰的示例会很有用。

在此先感谢您的时间。

最佳答案

看看包裹scales尤其?trans
我认为在给定获得值或更极端的概率的情况下映射颜色的转换应该是合理的(基本上 pnorm(z) )

我认为scale_colour_continuous(trans = probability_trans(distribution = 'norm')应该可以工作,但会发出警告。

所以我定义了一个新的转换(见 ?trans_new)

我必须定义一个变换和一个逆

library(scales)
norm_trans <- function(){
trans_new('norm', function(x) pnorm(x), function(x) qnorm(x))
}

badVersion + geom_point() + scale_colour_continuous(trans = 'norm'))

enter image description here

使用提供的 probability_trans发出警告并且似乎不起作用
# this throws a warning
badVersion + geom_point+
scale_colour_continuous(trans = probability_trans(distribution = 'norm'))

## Warning message:
## In qfun(x, ...) : NaNs produced

enter image description here

关于r - 转换色标,但使用 ggplot2 保留一个不错的图例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12186827/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com