簡體   English   中英

如何在 ggplot2 R 中為每個級別的 facet_wrap 擬合自定義曲線?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM