3

2 つの別個の関連する系列の棒グラフと折れ線グラフを凡例付きの同じグラフに配置したいと思います (棒グラフは四半期ごとの成長を表し、折れ線グラフは年間の成長を表します)。

私は現在、ワイドフォーマットのdata.frameと次のようなコードでそれを行っています:

p <- ggplot() +
    geom_bar(df, aes(x=Date, y=quarterly), colour='blue') +
    geom_line(df, aes(x=Date, y=annual), colour='red')

しかし、「年間成長率」というラベルの付いた赤い線がある凡例を追加する方法がわかりません。「四半期ごとの成長」というラベルの付いた青い四角。

または、長い形式のdata.frameを使用して、シリーズごとに異なるジオメトリを作成する方法を理解できません。

アップデート:

次のコード例は、ソリューションへの道のりの一部を示していますが、凡例が非常に醜く重複しています。まだ完全な解決策を探しています...このアプローチは、データを長い形式にしてから、データのサブセットをプロットすることに基づいています...

library(ggplot2)
library(reshape)
library(plyr)
library(scales)

### --- make a fake data set
x <- rep(as.Date('2012-01-01'), 24) + (1:24)*30
ybar <- 1:24
yline <- ybar + 1

df <- data.frame(x=x, ybar=ybar, yline=yline)
molten <- melt(df, id.vars='x', measure.vars=c('ybar', 'yline'))
molten$line <- ifelse(molten$variable=='yline', TRUE, FALSE)
molten$bar <- ifelse(molten$variable=='ybar', TRUE, FALSE)

### --- subset the data set
df.line  <- subset(molten, line==TRUE)
df.bar   <- subset(molten, bar==TRUE)

### --- plot it
p <- ggplot() +
geom_bar(data=df.bar, mapping=aes(x=x, y=value, fill=variable, colour=variable),
    stat='identity', position='dodge') +
geom_line(data=df.line, mapping=aes(x=x, y=value, colour=variable)) +

opts(title="Test Plot", legend.position="right") 

ggsave(p, width=5, height=3, filename='plot.png', dpi=150)

そしてプロットの例...

ここに画像の説明を入力

4

1 に答える 1

4

subsetgeoms への引数を使用する。

> x=1:10;df=data.frame(x=x,y=x+1,z=x+2)
> ggplot(melt(df),
    aes(x,value,color=variable,fill=variable))+
  geom_bar(subset=.(variable=="y"),stat="identity")+
  geom_line(subset=.(variable=="z"))

ここに画像の説明を入力

于 2012-09-08T04:38:40.570 に答える