我試圖用平滑線繪製多個數據框,使用ggplot()或stat_smooth()以png作爲背景。r多個ggplot,stat_smooth在png上
我有三個dataframes
data1 <- data.frame(Max.x, Max.y)
data2 <- data.frame(Med.x, Med.y)
data3 <- data.frame(Min.x, Min.y)
和圖片(PNG)文件
mypng <- readPNG("picture.png")
我發現,stat_smooth(跨度= 0.4),它會創造出流暢的線條,通過所有的變指向數據幀。
現在我想要繪製在mypng
我已經試過幾件事情三個線條流暢。
ggplot(data1, aes(x=Max.x, y=Max.y))+scale_x_continuous(limits = c(126,129))+scale_y_continuous(limits = c(37.5, 38.5))+ annotation_raster(mypng, xmin=126, xmax=129, ymin=37.5, ymax=38.5)+stat_smooth(span=0.4)
數據2和數據3也是如此。這繪製了一個PNG的每一行,但我無法找到一種方法讓所有三個行在同一個PNG。
此外,請注意,該圖必須設置x,y max和min b/c我的數據落在這些座標之間。
另一件事我想:
ggplot()+annotation_raster(mypng, xmin=126, xmax=129, ymin=37.5, ymax=38.5)+stat_smooth(data=data1, aes(x=Max.x, y=Max.y), span=0.4)+stat_smooth(data=data2, aes(x=Med.x, y=Med.y), span=0.4)+stat_smooth(data=data3, aes(x=Min.x, y=Min.y), span=0.4)+scale_x_continuous(limits=c(126,129))+scale_y_continuous(limits=c(37.5,38.5))
該地塊所有三個smoothlines。然而圖片沒有顯示。
我現在卡住了......我可以在mypng上得到三個不同的地塊。我可以得到所有三個地塊,但不是mypng。 我如何獲得mypng上的所有三行?
您在代碼中有一個錯字:'annotation_rater'應該是'annotation_raster'。另外,如果將三個數據幀堆疊到一個數據框中,則只需要調用一次'geom_smooth'。 – eipi10
對不起。我在沒有互聯網的計算機上工作,所以我不得不在這裏手動重寫代碼.. 並且對於您的觀點..我無法合併數據幀,因爲我看到三條不同的線。如果我將它們堆疊在一起,它只會創建一個。 –
是的,但是您添加另一個分組列來標記每行來自哪個數據框,並將該列映射到「組」或「顏色」審美。 @霧的答案顯示我的意思。 – eipi10