r - 绘制指数函数返回多余的线

标签 r plot line nls

我正在尝试对一组数据进行非线性回归。然而,绘制时,R 返回许多不同的线,而实际上应该只有一条线。

这个问题只能在一组数据中重现,并且我看不出该数据与其他数据之间有任何明显的差异。

这是我的情节的代码:

plot(df$logFC, df$log_pval, 
  xlim=c(0,11.1), ylim=c(0,11),
  xlab = "logFC", ylab = "p_val")

c <- df$logFC
d <- df$log_pval

model = nls(d ~ a*exp(b*c), start = list(a = 2,b = 0.1))

lines(c, predict(model), col = "dodgerblue", lty = 2, lwd = 2)

这是我的数据示例 (df):

logFC   log_pval
4.315   2.788
6.724   9.836
2.925   4.136
5.451   10.836
2.345   1.486
4.219   7.618

我已将问题范围缩小到模型,但我不确定从哪里开始。非常感谢任何帮助!

最佳答案

1) ggplot 方法

我尝试使用 ggplot2 绘制数据图形,我认为输出更符合您的预期......

library(tibble)
library(ggplot2)
library(dplyr)

# Create dataset
df <- tibble::tribble(~logFC, ~log_pval,
                      4.315,   2.788,
                      6.724,   9.836,
                      2.925,   4.136,
                      5.451,   10.836,
                      2.345,   1.486,
                      4.219,   7.618)


# Extract some vectors
c <- df$logFC
d <- df$log_pval

# Your model
model <-  nls(d ~ a*exp(b*c), start = list(a = 2,b = 0.1))

# Create second dataset for new plotting
df2 <- tibble(logFC = c, log_pval =predict(model))

# Plot output
ggplot() + 
  geom_line(data = df2, aes(x = logFC, y = log_pval)) + 
  geom_point(data = df, aes(x =logFC, y =log_pval)) +
  theme_classic()

<code>ggplot</code> output

2) 基本方法

如果您想坚持使用base,请尝试在绘制线条之前对数据框中的x 变量进行排序:

plot(df$logFC, df$log_pval, 
     xlab = "logFC", ylab = "p_val")

df3 <- tibble(x = df$logFC, y = predict(model)) %>% dplyr::arrange(x)
lines(df3$x, df3$y, col = "dodgerblue", lty = 1, lwd = 1)

baseplot

关于r - 绘制指数函数返回多余的线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57283281/

相关文章:

c++ - openCV:从矩阵绘制颜色图

replace - sed 在上一行的字符串匹配后替换第一次出现的字符串

r - Magritttr + lapply,其中第一个参数不是 LHS

r - gganimate:结合 transition_layers 和 geom_smooth

r - 使用 tidyverse 在按日期分组的大型 R 数据框中线性插值

python - 我的 PyQt 图的 Y 轴是颠倒的(甚至是文本)?

css - 具有 div 样式的 div 内的线/边距/边框 (html/css)

Three.js 中数千行的性能问题

r - Vowpal Wabbit 输入需要多少预处理?

r - Mac的BiodiversityR软件包的R错误消息