2

次のデータ フレームを使用します。

day <- gl(8,1,48,labels=c("Mon","Tues","Wed","Thurs","Fri","Sat","Sun","Avg"))
day <- factor(day, level=c("Mon","Tues","Wed","Thurs","Fri","Sat","Sun","Avg"))
month<-gl(3,8,48,labels=c("Jan","Mar","Apr"))
month<-factor(month,level=c("Jan","Mar","Apr"))

snow<-gl(2,24,48,labels=c("Y","N"))
snow<-factor(snow,levels=c("Y","N"))
count <-c(.94,.95,.96,.98,.93,.94,.99,.9557143,.82,.84,.83,.86,.91,.89,.93,.8685714,1.07,.99,.86,1.03,.81,.92,.88,.9371429,.94,.95,.96,.98,.93,.94,.99,.9557143,.82,.84,.83,.86,.91,.89,.93,.8685714,1.07,.99,.86,1.03,.81,.92,.88,.9371429)
d <- data.frame(day=day,count=count,month=month,snow=snow)

次のグラフで、月ごとにグループ化された線と点の色と形を変更したいと思います。

library(ggplot2)
library(scales)

ggplot(data=d[d$day=="Avg",],aes(x=day, y=count, fill=month,group=month,label=month),show_guide=F)+
facet_wrap(~snow,ncol=1,scales="free")+
geom_line(data=d[d$day!="Avg",],aes(x=day, y=count, group=month, colour=month), show_guide=F)+
scale_x_discrete(limits=levels(d$day))+
scale_y_continuous(labels = percent)+
geom_point(aes(colour = month),size = 4,position=position_dodge(width=1.2))+
expand_limits(y=0)

ここに画像の説明を入力

  1. 折れ線グラフとポイントの両方の色と形状 (多くのオプションが存在することを認識しています) を変更して、月ごとにグループ化するにはどうすればよいですか?

注: 適切な形状/色のグラフごとに 1 つの凡例が必要です (grid.arrange を使用せずに各グラフの凡例を作成する方法を理解できればボーナス ポイント)。

4

2 に答える 2

3

@thunk は正しいと思いますが、コードにはさらに問題があります。(1) を指定fillしますが、 を取る geom を使用しませんfill。(2) 最初の でデフォルトの美学を設定してから、ggplotでそれらを不必要にリセットしますgeom。(3) 形状を変更したいが、形状の美学を指定しない。

私はこれがあなたが望むものを与えると思います:

ggplot(data=d[d$day=="Avg",],
       aes(x=day, y=count, color=month, group=month,
           label=month, shape = month), show_guide=F)+
    facet_wrap(~snow, ncol=1, scales="free")+
    geom_line(data=d[d$day!="Avg", ])+
    scale_x_discrete(limits=levels(d$day))+
    scale_y_continuous(labels = percent)+
    geom_point(size = 4, position = position_dodge(width=1.2))+
    scale_color_manual(values = c("dodgerblue4", "firebrick4", "forestgreen")) +
    expand_limits(y=0)

固定プロット

最初の最初のaes呼び出しでは、と の両方が月ごとに異なるggplot()ことを指定します。そして、and呼び出しでは、もう一度言う必要はありません。追加すると、必要な色を選択できます (形状を指定する場合は、追加が機能します)。colorshapegeom_linegeom_pointscale_color_manual()scale_shape_manual()

お役に立てれば!

于 2013-05-16T16:40:51.437 に答える