0

我正在尝试在 ggplot2 中制作堆叠线图,其中正值堆叠在 x 轴上方,负值分别堆叠在 x 轴下方。我已经成功地分别堆叠了每种线型,但无法在一个图上同时拥有这两种线型。我正在寻找一些关于如何做到这一点的帮助,无论是通过叠加情节还是在单个情节上做一些创造性的事情。

我下面的代码使用了一个简单的 ggplot 和堆叠的 geom_line 图。一半的“类型”是关于时间的正值,另一半的“类型”都是负值。

    p <- ggplot(dataForm, aes(x=Time,y=Value,group=Type),colour=factor(Type))
    p + geom_line(aes(fill = Type),position = "stack")

我尝试了另一种方法,分别指定正值和负值但没有成功:

    p <- ggplot(dataForm, aes(x=Time,y=Value,group=Type),colour=factor(Type))
    p + geom_line(data = data1,aes(fill = Type),position = "stack")
    p + geom_line(data = data1,aes(fill = Type),position = "stack")

非常感谢任何有关如何执行此操作的建议。谢谢。

4

1 回答 1

5

在没有可重复的例子的情况下,我从学习者那里改编了这个例子

library(ggplot2)
library(plyr)

data = read.table(text="Time    Type    Value
1   a   8
2   a   10
3   a   10
4   a   5
5   a   3
1   b   9
2   b   5
3   b   7
4   b   8
5   b   3
1   c   -3
2   c   -1
3   c   -5
4   c   -4
5   c   -7
1   d   -11
2   d   -3
3   d   -9
4   d   -6
5   d   -6", header=TRUE)

p <- ggplot(data, aes(x=Time))
p <- p + geom_line(subset = .(Type %in% c('a', 'b')),
                   aes(y=Value, colour = Type),
                   position = 'stack')
p <- p + geom_line(subset = .(Type %in% c('c', 'd')),
                   aes(y=Value, colour = Type),
                   position = 'stack')
p

要产生这个:

堆积折线图

而且,为了更好地衡量,带有水平线的面积图:

p <- ggplot(data, aes(x=Time))
p <- p + geom_area(subset = .(Type %in% c('a', 'b')),
                   aes(y=Value, fill=Type),
                   position = 'stack')
p <- p + geom_area(subset = .(Type %in% c('c', 'd')),
                   aes(y=Value, fill = Type),
                   position = 'stack')
p <- p + geom_hline(yintercept=0)
p

面积图

于 2012-05-03T22:05:14.690 回答