3

次のデータがあり、それを使用してプロットすると、次のようggplot2になります。

a  <-c(0.3,0.3,0.3,0.3,0.3)
b  <-c(1:5,0.9,0.9,0.9,0.9,0.9)
c  <-c(1:5,0.5,0.5,0.5,0.5,0.5)
z  <-rep(1:5,5)
df <- data.frame(y=c(a,b,c),x=c(z),line=c(rep("1",5),
rep("2",5),rep("3",5),rep("2",5),rep("3",5)))

library(ggplot2)

a <- ggplot(df,aes(x=x,y=y,fill=line,shape=line,group=line)) +       
          geom_line(aes(linetype=line),size=1) +            
     scale_linetype_manual(values=c("dashed","solid", "dotdash")) +
          geom_point(size=3) + scale_shape_manual(values=c(25,23,21,25,23)) +    
     scale_fill_manual(values=c("red", "blue", "yellow","red", "blue"))

凡例のタイトルを指定したい場合は、次のような多くのことができます。

a + labs(shape = "MY TITLE HERE")   # or

a <- ggplot(df,aes(x=x,y=y,fill=line,shape=line,group=line)) +       
          geom_line(aes(linetype=line),size=1) +            
     scale_linetype_manual(values=c("dashed","solid", "dotdash")) +
          geom_point(size=3) + scale_shape_manual(values=c(25,23,21,25,23),name="MY 
          TITLE HERE") +    
     scale_fill_manual(values=c("red", "blue", "yellow","red", "blue"))

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

ただし、これらのオプションはすべて、複合凡例を個別のマッピングパラメータに分割します。

linetypeで複合凡例を維持し、凡例のタイトルを変更するshapeにはどうすればよいですか?fill

4

1 に答える 1

7

同じggplot2ラベルのすべてのスケールでグループ化されるため、次のようにする必要があります。

  1. (オプション)ラベルを使用して変数を作成します。例:scale_label
  2. 最初の引数と同じラベルを各スケールに渡します。

例えば:

scale_label <- "My custom title"

a <- ggplot(df,aes(x=x,y=y,fill=line,shape=line,group=line)) +       
    geom_line(aes(linetype=line),size=1) +            
    scale_linetype_manual(scale_label, values=c("dashed","solid", "dotdash")) +
    geom_point(size=3) + 
    scale_shape_manual(scale_label, values=c(25,23,21,25,23)) +    
    scale_fill_manual(scale_label, values=c("red", "blue", "yellow","red", "blue")) 
    #scale_shape("Title")
print(a)

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

于 2012-10-30T14:13:34.403 に答える