我正在創建每個采樣點的多面圖,并嘗試顯示四個變數 - 一個條形圖(每個采樣點的物種豐度),采樣點的水深線,河流高度的另一條線(在其他地方測量),和治療干預的符號。
我的問題是我似乎無法讓圖例顯示所有變數。我已經在 geom_point 的美學中包含了顏色,所以它會顯示出來,但我無法將 geom_lines 放入圖例中。如何獲得圖例中代表的所有四個幾何圖形?
另外,我想要第三個 y 軸,因為目前灰線(河流高度)根本沒有在 y 軸上表示。我已經對此進行了研究,并且認為添加第三個 y 軸是不可能的,但如果我遺漏了一些東西,我也會非常感謝您提供這方面的建議。
這是代碼(現在根據評論更新)
ggplot()
geom_bar(data = dat2_site, aes(y=count_l_site, x=date, fill=f_grp), position="stack",stat="identity")
geom_line(data = dat2_site, aes(y=2*water_depth, x=date))
geom_point(data = subset(dat2_site, control_previous_week=='yes'), aes(y=-5, x=date), size = 3, shape = 17, colour = 'black', )
geom_line(data = dat_twyford, aes(x = date, y=50*value), linetype = 1)
facet_wrap(~site,ncol=3)
theme_bw()
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),panel.background = element_blank(), strip.background = element_blank(), axis.line = element_line(colour = "black"), panel.border = element_rect(colour = 'black', fill = NA))
scale_y_continuous(expand = c(0,0), limits=c(-5, 100), sec.axis = sec_axis(~./2, name = 'Water depth (cm)'))
scale_x_date(date_breaks = "1 month", date_labels = "%b")
theme(axis.text=element_text(size=14),axis.title=element_text(size=12),legend.text = element_text(size=8))
labs(x="Date",y="Number of larvae per litre", colour = 'Control')
scale_fill_manual(values = cols_f_grps)
theme(legend.position = 'bottom')
theme(legend.text.align = 0)

uj5u.com熱心網友回復:
ggplot如果您計劃使用不同的資料框來填充繪圖,則不應在函式中使用 data 引數。而是將資料引數移動到它所依賴的每個幾何圖形,它應該可以作業。我無法提供輸出示例,因為未提供您的資料,因此您的代碼不可重現,但它看起來像這樣:
ggplot(aes(x=date))
geom_bar(data = dat2_site, aes(y=count_l_site, fill=f_grp), position="stack",stat="identity")
geom_line(data = dat2_site, aes(y=2*water_depth), colour = 'blue')
geom_point(data = subset(dat2_site, control_previous_week=='yes'), aes(y=-5, shape = control_previous_week, colour = 'yes'), size = 3, shape = 17, colour = 'black')
geom_line(data = dat_twyford, aes(x = date, y=50*value, colour = value), linetype = 1)
請注意,最后一行您使用了兩次顏色引數,并且在aes()函式中您必須命名被映射的變數而不帶引號。
uj5u.com熱心網友回復:
您需要在美學中包含顏色或形狀,但正如您發現的那樣,R 并不總是能打球。
這里有更多資訊https://aosmith.rbind.io/2018/07/19/manual-legends-ggplot2/
我已經嘗試過編輯您的代碼。我建議您在構建 ggplot 之前對資料進行子集化,例如:
dat2_site_y <-
dat2_site %>%
filter(control_previous_week == 'yes')
完成后,您可以正常構建 ggplot,并使用 scale_colour_identity 定義線條顏色、名稱和標簽。您還可以添加 scale_shape 以添加控制符號。
ggplot()
geom_bar(data = dat2_site, aes(y=count_l_site, x=date, fill=f_grp), position="stack",stat="identity") . geom_line(data = dat2_site, aes(y=2*water_depth, x=date, colour = 'blue'))
geom_point(data = dat2_site_y, aes(y=-5, x=date, shape = control_previous_week), size = 3)
geom_line(data = dat_twyford2, aes(x = date, y=100*value, colour = 'grey'))
facet_wrap(~site,ncol=3, scales = 'free_y')
scale_fill_manual(values = cols_f_grps, name = 'Functional group')
scale_colour_identity(name = '', breaks = c('blue', 'grey'), labels = c('Water depth', 'River height'), guide = 'legend')
scale_shape(name = 'line', breaks = c('yes'), labels = c('Control'))
我無法運行它,正如菲爾在下面所說的那樣,我們需要一個可重現的示例。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/427657.html
