0

ggplot2 で、正の値が x 軸の上に積み上げられ、負の値が x 軸の下に別々に積み上げられた積み上げ折れ線グラフを作成しようとしています。各線種を個別に積み重ねることに成功しましたが、両方を 1 つのプロットに含めることはできませんでした。プロットを重ねるか、単一のプロットで何かクリエイティブなことをすることで、これを行う方法についての助けを探しています。

以下の私のコードは、積み重ねられた geom_line プロットを持つ単純な ggplot を使用しています。「タイプ」の半分は時間に対して正の値であり、「タイプ」の残りの半分はすべて負の値です。

    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 に答える