2015-11-21 26 views
0

我在一個散點圖中繪製了x和y變量,圖例中提供了基於單個樣本id變量的每個點的形狀和顏色。我想疊加第二個數據框中的點,但是當我嘗試添加第二個數據框中的點時,出現一個錯誤,指出它找不到用於指定點的顏色和形狀的變量原始數據幀。我使用此代碼:在ggplot中使用兩個數據幀並且遇到圖例問題

p=ggplot(HebWater, aes(x = PCSrCa.24, y = SrIso, group = Location, 
color =  Location, shape = Location)) + 
geom_point(size=6) + 
scale_shape_manual(values = 1:17) + 
theme(panel.grid.major=element_line(colour="white"), 
panel.grid.minor=element_blank(),panel.background=element_rect(colour="black",fill="white")) 
p 
p1=p+geom_errorbar(aes(ymin=SrIso-SDSrIso*3, ymax=SrIso+SDSrIso*3))+ 
geom_errorbarh(aes(xmin=PCSrCa.24-SDSrCa*3, xmax=PCSrCa.24+SDSrCa*3)) 
p1 
p2=p1+geom_point(data=HebOto, aes(SrCa,SrIso)) 
p2 

一切工作正常,直到我嘗試運行圖形P2上的代碼,我已經成功地在同一個圖形繪製兩個數據幀,但沒能得到傳說中能正確顯示不管我怎麼努力改變形狀,並使用此代碼顏色參數:

ggplot(HebWater, aes(PCSrCa.24, SrIso))+ 
geom_errorbar(aes(ymin=SrIso-SDSrIso*3, ymax=SrIso+SDSrIso*3))+ 
scale_shape_manual(values=1:17)+ 
geom_errorbarh(aes(xmin=PCSrCa.24-SDSrCa*3, xmax=PCSrCa.24+SDSrCa*3))+ 
geom_point(data=HebOto, aes(SrCa,SrIso))+ 
geom_point(data=HebWater, show_guide=TRUE, shape=c(1:17), colour=c(1:17), size=6)+ 
theme(panel.grid.major=element_line(colour="white"), 
panel.grid.minor=element_blank(), 
panel.background=element_rect(colour="black",fill="white")) 

我的數據幀都以這種方式分別組織:

> head(HebWater) 
     Location SrIso PCSrCa.24  SDSrIso SDSrCa PCSrCa.28 
1 Gib (baseflow) 0.70966 0.2911440 0.000643719 0.0308056 0.3396680 
2 Fire (baseflow) 0.71006 0.1119312 0.000643719 0.0308056 0.1305864 
3 Mad R (runoff) 0.71052 0.2043264 0.000643719 0.0308056 0.2383808 
+1

您應該嘗試1.提供其他人可以使用的數據(您僅提供3行數據集中的一行),以及2.在代碼最小的情況下減少代碼,但仍會產生相同的錯誤。這裏所有的「主題」與你的錯誤無關,應該刪除。 – Arthur

+0

'HebOto'中是否有'Location'列?如果不是,嘗試將'p'的定義更改爲:'p = ggplot(HebWater,aes(x = PCSrCa.24,y = SrIso))+ geom_point(aes(color = Location,shape = Location),size = 6 )+ ...' – jlhoward

回答

1
HebWater <- data.table(
    SrIso  = runif(20), 
    SDSrIso = runif(20), 
    PCSrCa.24 = runif(20), 
    SDSrCa = runif(20) 
) 
HebOto <- data.table(
    SrCa  = runif(20), 
    SrIso = runif(20) 
) 

library(ggplot2) 

ggplot(HebWater, aes(PCSrCa.24, SrIso))+ 
    geom_errorbar(aes(ymin=SrIso-SDSrIso*3, ymax=SrIso+SDSrIso*3))+ 
    scale_shape_manual(values=1:17)+ 
    geom_errorbarh(aes(xmin=PCSrCa.24-SDSrCa*3, xmax=PCSrCa.24+SDSrCa*3))+ 
    geom_point(data=HebOto, aes(SrCa,SrIso))+ 
    geom_point(data=HebWater, show_guide=TRUE, shape=c(1:17), colour=c(1:17), size=6) 

產生以下錯誤:

Error: Incompatible lengths for set aesthetics: shape, colour, size 

這似乎合乎邏輯的我,因爲你修復第二geom_point()形狀,顏色和你分大小。沒有傳說給予,因爲那些根本不依賴於數據!如果您想要圖例,則必須使用aes(shape=some_variable1, colour=some_variable2, size=some_variable3),然後在必要時用scale_xxxxxx_manual()強制進行管理。

相關問題