0

これは私の質問をする2回目の試みです。今回は、再現可能な例を提供できればと思います。

変数 DIS と Date を持つ data.frame があります。ggplot2 で data.frame をプロットしたいと思います。X 軸に日付、Y 軸に DIS。

2 つのパネルにプロットしたいのですが、y 軸のスケールは同じです。

パネル 1: 1Q1 から 4Q4 まで。パネル 2: P1 から P3 まで。さらに、4本の水平線をプロットしたいと思います:

対照群の下限 (パネル 1 とパネル 2 で同じである必要があります) 対照群の上限 (パネル 1 とパネル 2 で同じである必要があります) パネル 1 の DIS の平均 (パネル 1 でのみ表示される必要があります) ) パネル 2 の DIS の平均 (パネル 2 でのみ表示されるはずです) face_grid と geom_hline を使用しようとしましたが、ご覧のとおり、19 のパネルが得られ、すべてのパネルで水平線が表示されます。

DIS=c(0.1120, 0.1104, 0.3794, 0.3983, 0.3175, 0.2275, 0.2171, 0.1973, 0.2499, 0.1819, 0.2613, 0.2302, 0.3795, 0.2406, 0.2486, 0.2464, 0.1143, 0.2685, 0.2447)
    Date=c("1Q1","1Q2","1Q3","1Q4","2Q1","2Q2","2Q3","2Q4","3Q1","3Q2","3Q3","3Q4","4Q1","4Q2","4Q3","4Q4","P1","P2", "P3" )

Bush <- data.frame(Date, DIS)

require (ggplot2)

ggplot(Bush, aes(x = Date, y = DIS))+
  geom_point(shape=1)+
  ylim(0,0.5)+
  geom_hline(aes(yintercept=0.07), linetype="dotted")+ #that's the lower limit of the control group
  geom_hline(yintercept=0.19, linetype="dotted")+ # that's the upper limit of the control group
  geom_hline(yintercept=mean(Bush$DIS[1:16]), colour="blue")+ # that's the mean of the values from 1Q1 to 4Q4 - it should only range from 1Q1 until 4Q4 on the x-axis
  geom_hline(yintercept=mean(Bush$DIS[17:19]), colour="blue")+ # that's the mean of the values from P1 to P3 - it should only range from P1 to P3 on the x-axis
  facet_grid(.~ Date, scales="free_x") # it should be grouped in two panels - 1st from 1Q1 to 4Q4, 2nd from P1 to P3

誰か助けてくれませんか?

4

1 に答える 1

0

x 変数でファセットしています。別のファセット動作が必要な場合は、表示したい動作に一致する特定の変数を作成する必要があります。

Bush$grp <- rep(c('a','b'),times = c(16,3))

そこで、観察結果をグループ化してパネルにまとめて表示する新しい変数を作成しました。次に、その変数をファセットします。

facet_grid(.~ grp, scales="free_x")

水平線を別々のパネルに表示する方法は同じです。(常に同じです。これが ggplot の秘訣です!) データ フレームを作成し、すべてがどこに行くかを示す変数を使用します。

mean_df <- data.frame(grp = c('a','b'),
                      yint = with(Bush,c(mean(DIS[1:16]),mean(DIS[17:19]))))

次に、そのデータ フレームを に渡し、次のようgeom_hlineにマップyinterceptyintます。

geom_hline(data = mean_df,aes(yintercept = yint),colour = "blue")
于 2013-06-11T14:40:49.447 に答える