用丝带绘制图表时遇到问题。我在这里的一个帖子中遇到了一个示例脚本。这有同样的问题。
以下是线程中的脚本(稍加修改)
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'))
该脚本绘制两条名为&#34;一条&#34;和&#34;两个&#34;。 Ribbon&#34; one&#34; (上升)应该是红色的&#34;两个&#34; (下来)应该是蓝色的。但颜色是相反的。
如果脚本逐步执行,您将看到第一个带子被绘制成红色,当绘制带子2时,它会改变颜色。
我对R.全新。请向我解释这里发生了什么?
答案 0 :(得分:1)
根据ggplot2 documentation(第10页),当您在美学中设置参数fill
时,您基本上会创建一个颜色标度(可以是连续的也可以是离散的,具体取决于关于论点)。我不确定aes函数的内部实现,但是我怀疑,因为你传递了一个颜色字符串,而不是可能值的向量,所以填充参数被忽略了
事实上,如果您在应用g
功能之前查看scale_fill_manual
,您会看到ggplot2将其默认颜色分配给色带,而不是您选择的颜色:< / p>
最后颜色反转的原因是因为当你应用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)
此外,对于此特定示例,您不需要最后的色标。