相关疑难解决方法(0)

基于值的曲线下填充区域

我们试图用ggplot2制作一个区域图,其中x轴上方的正区域是一种颜色而负区域是另一种颜色.

给定这个数据集,我想要一个区域图在轴的每一侧用不同颜色着色.

我可以看到一种方法将数据集分成两个子集,一个是正值,其中所有负值都是零,一个是负值,所有正值都是零,然后将它们分别绘制在同一个轴上,但似乎会有一个更像ggplot的方式来做到这一点.

这个问题上发布的解决方案没有给出准确的结果(见下文).

示例数据准确显示为条形图

原始数据

由此代码生成:

# create some fake data with zero-crossings
yvals=c(2,2,-1,2,2,2,0,-1,-2,2,-2)
test = data.frame(x=seq(1,length(yvals)),y=yvals)

# generate the bar plot
ggplot(data=test,aes(x=x,y=y)) 
    + geom_bar(data=test[test$y>0,],aes(y=y), fill="blue",stat="identity", width=.5) 
    + geom_bar(data=test[test$y<0,],aes(y=y), fill="red",stat="identity", width=.5)
Run Code Online (Sandbox Code Playgroud)

RLE方法不是一般的

在另一个问题上提出的RLE方法在应用于我们的数据集时会产生与过零相关的工件:

Ribbon RLE图

由以下代码生成(不要使用):

# set up grouping function
rle.grp <- function(x) {
   xx <- rle(x)
   xx$values = seq_along(xx$values)
   inverse.rle(xx) }

# generate ribbon plot
ggplot(test, aes(x=x,y=y,group = factor(rle.grp(sign(y))))) + 
    geom_ribbon(aes(ymax = pmax(0,y),ymin = pmin(0,y),
   fill = factor(sign(y), levels = c(-1,0,1), labels = c('-','0','+')))) 
   + …
Run Code Online (Sandbox Code Playgroud)

plot r ggplot2

6
推荐指数
1
解决办法
3240
查看次数

标签 统计

ggplot2 ×1

plot ×1

r ×1