蓝色在相交之前位于绿色之下,而绿色在相交之后位于蓝色之下。但是,我不能为另一半着色,因为蓝色和红色是发散的。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了蓝色在相交之前位于绿色之下,而绿色在相交之后位于蓝色之下。但是,我不能为另一半着色,因为蓝色和红色是发散的。相关的知识,希望对你有一定的参考价值。

是否有

simple方式在两条几乎垂直的线之间像这样着色?

我尝试了geom_ribbon,但没有成功。这是我当前的代码,仅着色一半。

最小工作示例

library(ggplot2) # Lines to plot blue_line <- function(x) 28.6*x - 51 red_line <- function(x) -16*x + 28 green_line <- function(x) 5.5*x-10 # Data to plot x <- seq(from=1, to=4, length.out=200) df <- data.frame(x=x, yblue=blue_line(x), yred=red_line(x), ygreen=green_line(x)) ggplot(data=df, aes(x=x)) + geom_ribbon(aes(x=x, ymin=ygreen, ymax=yblue), fill="grey80") + geom_line(aes(x=x, y=yblue), color="blue") + geom_line(aes(x=x, y=yred), color="red") + geom_line(aes(x=x, y=ygreen), color="green") + coord_cartesian(xlim=c(-3.5, 8), ylim=c(-4, 12)) 产生fig2

第二最小工作示例

此代码有效,但是请注意它是多么乏味,重复和愚蠢。希望有更好的方法。

library(ggplot2)
# Lines to plot
blue_line <- function(x) 28.6*x - 51
red_line <- function(x) -16*x + 28
green_line <- function(x) 5.5*x-10
# Data to plot
x <- seq(from=0.9, to=4.2, length.out=200)
# Below
x_below <- seq(from=0.9, to=2.06, length.out=200)
y_below <- rep(-5, 200)
y_below_above <- c(green_line(x_below[x_below <= 1.76744]), red_line(x_below[x_below > 1.76744]))
# Above
x_above <- seq(from=-2.5625, to=4.181818, length.out=200)
y_above <- rep(13, 200)
y_above_below <- c(red_line(x_above[x_above<=1.76744]), green_line(x_above[x_above>1.76744]))
df <- data.frame(x=x, yblue=blue_line(x), yred=red_line(x), ygreen=green_line(x),
                 ybelow=y_below, xbelow=x_below, y_below_above=y_below_above,
                 xabove=x_above, yabove=y_above, y_above_below=y_above_below)
ggplot(data=df, aes(x=x)) + 
  geom_ribbon(aes(x=xbelow, ymin=ybelow, ymax=y_below_above), fill="grey80") + 
  geom_ribbon(aes(x=xabove, ymin=y_above_below, ymax=yabove), fill="grey80") +
  geom_line(aes(x=x, y=yblue), color="blue") + 
  geom_line(aes(x=x, y=yred), color="red") + 
  geom_line(aes(x=x, y=ygreen), color="green") + 
  coord_cartesian(xlim=c(-3.5, 8), ylim=c(-4, 12))

产生期望的fig3

问题:我想在Trick标题的线条之间涂上颜色。我有三行看起来像这样,我想对绿色和红色之间的区域进行阴影/上色。基本上是红色和...

答案
geom_polygon example to fill between two lines

以上是关于蓝色在相交之前位于绿色之下,而绿色在相交之后位于蓝色之下。但是,我不能为另一半着色,因为蓝色和红色是发散的。的主要内容,如果未能解决你的问题,请参考以下文章

闪烁动画问题

C++学习(二七九)为什么用绿幕

ArcGis中两个面相交,怎么删除其中一个面的重叠部分呢?

bzoj 4660

ZArchiver Pro蓝色版跟绿色版区别

关于安装了git或者小乌龟(TortoiseGit)使用之后出现红色! 绿色√ 蓝色?的解决办法: