2016-04-06 26 views
1

2つの異なる長さのデータのgeom_point ggplot2に凡例を追加しようとしています。私は色をggplot()のための美学にマッピングしようとしましたが、データの長さが異なるため、エラーが発生します。さまざまなベクトル長の問題を回避するために伝説を追加する方法はありますか?私はOPのエラーを複製することはできませんので、私は質問を推測しているggplot2の長さベクトルが等しくないデータのプロットに凡例を追加

conc <- c(0.004, 0.003, 0.003, 0.003, 0.004, 0.003, 0.004, 0.008, 0.020) 
time <- c(seq(from=1,to=length(conc))) 
conc <- c(0.007, 0.012, 0.002, 0.003, 0.003, 0.004, 0.007, 0.003, 0.004, 0.005, 0.004, 0.016) 
time <- c(seq(from=1,to=length(conc))) 
data1 <- data.frame(time,conc) 
data2 <- data.frame(time,conc) 

ggplot()+ coord_cartesian(ylim = c(0,0.075))+ 
geom_point(data=data1,aes(time,conc),shape=10,size=.02,color='black')+ 
geom_step(data=data2,aes(time,conc),size=.1,color='black')+ 
xlab("Sampling Time (sec)")+ 
ylab("Concentration (#/cm^3)") 
+2

投稿を編集してデータを追加して、例が再現できるようにしてください。 'dput(spAm)'などが役に立つかもしれません。 – lukeA

+0

http://stackoverflow.com/questions/16311335/different-legend-keys-inside-same-legend-in-ggplot2/16529687#16529687 (また、不等長さは問題ではありません。 'rbind'を介してデータセット)。 – oshun

+0

各データセットの変数をaethesticsに入力しようとすると、「美学の長さはデータ1(x)と同じでなければなりません」というエラーが表示されます:x、y "データセットを組み合わせると、私はggplotに使用する必要がありますか?私はggplot2を初めて使用しているので、これは素朴な疑問のように思えるかもしれません。あなたがあなたのためにrbindを使うことをお勧めしました。その後、データセットの選択されたサブセットを読み込みます。 –

答えて

0

は次のとおりである:「別のgeom要素と凡例を追加する方法は?」ここ

2のアプローチ:

  1. 基本:1つのデータセット、AESからの伝説()
  2. 高度:customized legend keys(リンクの答えから、ほぼ直接コピー)。

まず、単一のデータセットをggplotに送信し、グループ化変数を独自の列として追加することをお勧めします。これらのグループ(色、塗りつぶし、サイズ、形、アルファ)に基づいて、必要なプロパティを設定します。 ggplotはこれらのグループ化変数に基づいて凡例を作成します。 (注意:すでにgeoms異なる作るためにあなたのデータをサブセット化しているため、単一のdata.frameは、この特定の場合には必要ありません)

#Example data 
conc <- c(0.004, 0.003, 0.003, 0.003, 0.004, 0.003, 0.004, 0.008, 0.020) 
time <- c(seq(from=1,to=length(conc))) 
data1 <- data.frame(time,conc)  
conc <- c(0.007, 0.012, 0.002, 0.003, 0.003, 0.004, 0.007, 0.003, 0.004, 
      0.005, 0.004, 0.016) 
time <- c(seq(from=1,to=length(conc))) 
data2 <- data.frame(time,conc) 

#Create grouping variables 
data1$category <- "myPoint" 
data2$category <- "myStep" 
data3 <- rbind(data1, data2) 

基本的な考え方:

#Graph the combined data, setting the overall aes() 
#but subset the data for the different visual elements (points and steps) 
ggplot(data3, aes(time, conc, colour=category))+ coord_cartesian(ylim = c(0,0.075))+ 
    geom_point(data=data3[data3$category == "myPoint",], shape=10,size=2)+ 
    geom_step(data=data3[data3$category == "myStep", ], size=1)+ 
    xlab("Sampling Time (sec)")+ 
    ylab("Concentration (#/cm^3)") + 
    ggtitle("Basic") 

高度なアプローチ:

#Specify a custom colour in each variable's aesthetics 
#Hack the legend: color = guide_legend(override.aes = list(...)) 
ggplot()+ coord_cartesian(ylim = c(0,0.075))+ 
    geom_point(data=data1,aes(time,conc, color='point'),shape=10,size=2)+ 
    geom_step(data=data2,aes(time,conc, color='step'),size=1)+ 
    xlab("Sampling Time (sec)")+ 
    ylab("Concentration (#/cm^3)") + 
    ggtitle("Advanced") + 
    scale_colour_manual(name = "legend", 
         values = c("point" = "black", "step" = "black")) + 
    guides(color=guide_legend(override.aes=list(
       shape=c(10, NA), 
       linetype=c(0,1) 
       ))) 

same legend, different geoms override.aes point and line different geoms

関連する問題