我試圖顯示低 x 值的線性模型和更高 x 值的非線性模型。為此,我將使用 DNase 作為示例:
library(ggplot2)
#Assinging DNase as a new dataframe:
data_1 <- DNase
#Creating a column that can distinguish low and high range values:
data_1$range <- ifelse(data_1$conc <5, "low", "high")
#Attempting to plot separate lines for low and high range values, and also facet_wrap by run:
ggplot(data_1, aes(x = conc, y = density, colour = range))
geom_point(size = 0.5) stat_smooth(method = "nls",
method.args = list(formula = y ~ a*exp(b*x),
start = list(a = 0.8, b = 0.1)),
data = data_1,
se = FALSE)
stat_smooth(method = 'lm', formula = 'y~0 x')
facet_wrap(~Run)
但是,正如您所看到的,它似乎同時為兩者繪制了線性模型和非線性模型,而且我無法弄清楚將告訴它只為每個繪制一個的資訊放在哪里。另外,如果可能的話,我可以將這些模型擴展到 x 軸上的所有值范圍嗎?

uj5u.com熱心網友回復:
您可以為每個geom. 在這種情況下,使用子集data_1usingrange僅向每個stat_smooth()呼叫提供相關資料(以及整個框架以geom_point()
ggplot(NULL, aes(x = conc, y = density, colour = range))
geom_point(data = data_1, size = 0.5)
stat_smooth(data = subset(data_1, range == "high"),
method = "nls",
method.args = list(formula = y ~ a*exp(b*x),
start = list(a = 0.8, b = 0.1)),
se = FALSE)
stat_smooth(data = subset(data_1, range == "low"), method = 'lm', formula = 'y~0 x')
facet_wrap(~Run)

如果您想在所有資料上擬合兩個模型,那么只需手動計算這些資料data_1并手動繪制即可。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/376451.html
上一篇:使用拼湊時如何減少圖之間的空間
