58

私は自分のプロットの凡例を変更するのに大変苦労しています。再現可能な例を次に示します。

dtt <- structure(list(model = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L), .Label = c("ma", "mb", "mc"), class = "factor"), year = c(2005L, 2006L, 2007L, 2008L, 2009L, 2010L, 2005L, 2006L, 2007L, 2008L, 2009L, 2010L, 2005L, 2006L, 2007L, 2008L, 2009L, 2010L), V = c(0.16, 0.14, 0.11, 0.13, 0.15, 0.16, 0.24, 0.17, 0.12, 0.13, 0.15, 0.15, 0.2, 0.16, 0.11, 0.12, 0.12, 0.15), lower = c(0.11, 0.11, 0.07, 0.09, 0.11, 0.12, 0.16, 0.12, 0.04, 0.09, 0.09, 0.11, 0.14, 0.1, 0.07, 0.08, 0.05, 0.1), upper = c(0.21, 0.19, 0.17, 0.17, 0.19, 0.2, 0.29, 0.23, 0.16, 0.17, 0.16, 0.2, 0.26, 0.27, 0.15, 0.16, 0.15, 0.19)), .Names = c("model", "year", "V", "lower", "upper"), class = "data.frame", row.names = c(NA, -18L))

私のプロットは次のように生成されます:

ggplot(dtt, aes(x=year, y=V, group = model, colour = model, ymin = lower, ymax = upper)) +
    geom_ribbon(alpha = 0.35, linetype=0)+ 
    geom_line(aes(linetype=model), size = 1.5) +       
    geom_point(aes(shape=model), fill = "white", size = 4)  +      
    theme(legend.position=c(.6,0.8)) +
    theme(legend.background = element_rect(colour = 'black', fill = 'grey90', size = 1, linetype='solid'))

これを生成します: ここに画像の説明を入力してください

さて、私がやりたいのは

  1. 凡例のタイトルを変更する
  2. 凡例アイテムが表示される順序を変更します
  3. 凡例項目のテキストを変更します。

私はこれをやろうとして何時間もいじくり回しましたが、あまり成功しませんでした。私がこれまでに管理した最善の方法は、これを追加することです。

scale_colour_hue(name = "Model 1",
    breaks=c("mb", "ma", "mc"),
    labels=c("MBB", "MAA", "MCC"))

しかし、それはこの忌まわしさを生み出します: ここに画像の説明を入力してください

ご覧のとおり、不要な凡例が追加されており、凡例の形状がプロットの形状と一致していません。

最後に、凡例のグラフィックを使用して、青と緑の線が実線ではなく破線であることを示したいと思いますが、その方法はまったくわかりません。

どんな援助も大歓迎です、

4

1 に答える 1

82

あなたは2つのことをする必要があります:

  1. プロットの前に因子レベルの名前を変更して並べ替えます
  2. 各凡例のタイトルの名前を同じタイトルに変更します

コード:

dtt$model <- factor(dtt$model, levels=c("mb", "ma", "mc"), labels=c("MBB", "MAA", "MCC"))

library(ggplot2)
ggplot(dtt, aes(x=year, y=V, group = model, colour = model, ymin = lower, ymax = upper)) +
  geom_ribbon(alpha = 0.35, linetype=0)+ 
  geom_line(aes(linetype=model), size = 1) +       
  geom_point(aes(shape=model), size=4)  +      
  theme(legend.position=c(.6,0.8)) +
  theme(legend.background = element_rect(colour = 'black', fill = 'grey90', size = 1, linetype='solid')) +
  scale_linetype_discrete("Model 1") +
  scale_shape_discrete("Model 1") +
  scale_colour_discrete("Model 1")

ここに画像の説明を入力してください

しかし、これは本当に醜いだけでなく、解釈するのも難しいと思います。ファセットを使用することをお勧めします。

ggplot(dtt, aes(x=year, y=V, group = model, colour = model, ymin = lower, ymax = upper)) +
  geom_ribbon(alpha=0.2, colour=NA)+ 
  geom_line() +       
  geom_point()  +      
  facet_wrap(~model)

ここに画像の説明を入力してください

于 2012-08-22T14:56:17.987 に答える