![](/img/trans.png)
[英]R: Fit custom n-th degree polynomial to each facet in facet_wrap'd ggplot
[英]How to fit custom curves for each level of facet_wrap in ggplot2 R?
我有一個散點圖,其中 x = xaxis 和 y = yaxis 以及兩個級別,我需要分別拆分和分析數據。 對於每組數據,我需要 plot 一個自定義 function 的形式y ~ (A*((B*x/C)-1) - 1)*log(x))
。 對於每個級別,我需要指定 A、B 和 C。 如何在 ggplot2 中執行此操作?
ggplot2的示例代碼。 我已經生成了隨機數據,所以平滑的 function 可能對這些數據沒有意義(但對我的原始數據有意義)
xaxis = c(1:100)
yaxis = rnorm(100,2,0.1)
level = rep(c("A","B"), 50)
df <- data.frame(xaxis, yaxis, level)
ggplot(df,aes(x= xaxis, y = yaxis, col = level)) + geom_point() +facet_wrap(.~level, scales="free")+ geom_smooth(method="lm", formula = y ~ (A*((B*x/C)-1) - 1)*log(x))
如果嘗試使用您的公式擬合 model 以查找 A、B 和 C 的值,則不能,原因很簡單,B 和 Z0D61F8370CAD1D412F80B84D143E125Z 的比率僅在您的公式中出現。 因此,如果“B”的真實值為 4,“C”的真實值為 2,那么這與“B”為 12 和“C”為 6 是無法區分的。兩個可以通過回歸估計。
如果您只想 plot 公式指定的行,您預先指定 A、B 和 C,那么這是可能的。 例如:
my_func <- function(x, A, B, C) (A*((B*x/C)-1) - 1)*log(x)
ggplot(df,aes(x= xaxis, y = yaxis, col = level)) +
geom_point() +
facet_wrap(.~level, scales = "free")+
geom_function(data = data.frame(xaxis = 0, yaxis = 0, level = "A"),
fun = my_func,
args = list(A = 0.05, B = 2, C = 5)) +
geom_function(data = data.frame(xaxis = 0, yaxis = 0, level = "B"),
fun = my_func,
args = list(A = 0.1, B = -0.0005, C = 1))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.