gpt4 book ai didi

功能区颜色反转

转载 作者:行者123 更新时间:2023-12-01 21:24:27 30 4
gpt4 key购买 nike

我在用丝带绘制图表时遇到问题。我在这里的一个线程中发现了一个示例脚本。那也有同样的问题。

下面是来自线程的脚本(略有修改)

x=1:10
y1=1:10
y2=2:11
y3=10:1
y4=9:0

dt=data.frame(x,y1,y2,y3,y4)

library(ggplot2)

g<-ggplot(dt)+
geom_ribbon(aes(x=x,ymin=y1,ymax=y2,fill='red'),
alpha=0.4)

g<-g + geom_ribbon(aes(x=x,ymin=y3,ymax=y4,fill='blue'),
alpha=0.5)

g<-g + scale_fill_manual(name='legendname',
values=c('red','blue'),
labels=c('one','two'))

该脚本绘制两条丝带,分别称为“一”和“二”。丝带“一”(向上)应该是红色,“二”(向下)应该是蓝色。但颜色颠倒了。

如果逐步执行脚本,您将看到功能区一首先绘制为红色,当绘制功能区二时,它会改变颜色。

我对 R 完全陌生。那么请向我解释一下这里发生了什么?

最佳答案

根据ggplot2 documentation (第 10 页),当您在美学中设置参数 fill 时,您基本上是在创建一个色标(可以是连续的或离散的,具体取决于参数)。我不确定 aes 函数的内部实现,但我怀疑,由于您向它传递的是颜色字符串,而不是可能值的向量,所以填充参数会被忽略。

事实上,如果您在应用 scale_fill_manual 函数之前查看 g,您会看到 ggplot2 将其默认颜色分配给色带,而不是为色带分配默认颜色。您选择了:

enter image description here

最后颜色反转的原因是,当您应用scale_fill_manual时,红色会进入顶部的图层,蓝色会进入其下方的图层。

要获得正确的颜色,您可以将 fill 参数分配给 geom_ribbon 而不是 aes,如下所示:

g <- ggplot(dt)
g <- g + geom_ribbon(aes(x=x, ymin=y1, ymax=y2), fill = 'red', alpha=0.4)
g <- g + geom_ribbon(aes(x=x, ymin=y3, ymax=y4), fill = 'blue', alpha=0.5)

此外,对于这个特定示例,您不需要最后的色阶。

关于功能区颜色反转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28869124/

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