标签: ggpmisc

在图上添加回归线方程和R2

我想知道如何添加回归线方程和R ^ 2 ggplot.我的代码是

library(ggplot2)

df <- data.frame(x = c(1:100))
df$y <- 2 + 3 * df$x + rnorm(100, sd = 40)
p <- ggplot(data = df, aes(x = x, y = y)) +
            geom_smooth(method = "lm", se=FALSE, color="black", formula = y ~ x) +
            geom_point()
p
Run Code Online (Sandbox Code Playgroud)

任何帮助将受到高度赞赏.

r ggplot2 ggpmisc

207
推荐指数
8
解决办法
23万
查看次数

用ggpmisc显示nls模型的方程

Rggpmisc可用于显示lm模型和poly模型的方程ggplot2(参见此处参考).想知道如何使用nls模型方程结果.以下是我的MWE.ggplot2ggmisc

library(ggpmisc)
args <- list(formula = y ~ k * e ^ x,
             start = list(k = 1, e = 2))
ggplot(mtcars, aes(wt, mpg)) +
  geom_point() +
  stat_fit_augment(method = "nls",
                   method.args = args)
Run Code Online (Sandbox Code Playgroud)

r nls ggplot2 lm ggpmisc

14
推荐指数
2
解决办法
469
查看次数

在 R ggplot 的每个方面生成一个插图,同时保留原始方面内容的颜色

我想生成一个图形,将图形的四个方面与每个方面的插图相结合,显示相应图的细节。这是我尝试过的事情之一:

    #create data frame

n_replicates <- c(rep(1:10,15),rep(seq(10,100,10),15),rep(seq(100,1000,100),15),rep(seq(1000,10000,1000),15))
sim_years <- rep(sort(rep((1:15),10)),4)
sd_data <- rep (NA,600)
for (i in 1:600) {
sd_data[i]<-rnorm(1,mean=exp(0.1 * sim_years[i]), sd= 1/n_replicates[i])
}
max_rep <- sort(rep(c(10,100,1000,10000),150))
data_frame <- cbind.data.frame(n_replicates,sim_years,sd_data,max_rep)


#do first basic plot
library(ggplot2)
plot1<-ggplot(data=data_frame, aes(x=sim_years,y=sd_data,group =n_replicates, col=n_replicates)) + 
  geom_line() + theme_bw() +
  labs(title ="",  x = "year", y = "sd")
plot1


#make four facets
my_breaks = c(2, 10, 100, 1000, 10000)
facet_names <- c(
  `10` = "2, 3, ..., 10 replicates",
  `100` = "10, 20, ..., 100 …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 ggpmisc

9
推荐指数
3
解决办法
606
查看次数

使用 ggplot2 中的 stat_poly_eq 指定每个方面的公式

我从这里借用了这个示例数据集:

# Load library
library(ggplot2)

# Load data
data(mtcars)

# Plot data
p <- ggplot(mtcars,aes(x = disp, y = mpg)) + geom_point() + facet_grid(gear ~ am)
p <- p + geom_smooth(method="lm")
print(p)
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,回归方法和公式在所有方面都是相同的。如果我们想指定构面(或面板) 6 的公式,我们可以使用以下代码:

# Smoothing function with different behaviour depending on the panel
custom.smooth <- function(formula, data,...){
  smooth.call <- match.call()

  if(as.numeric(unique(data$PANEL)) == 6) {
    # Linear regression
    smooth.call[[1]] <- quote(lm)
    # Specify formula
    smooth.call$formula <- as.formula("y ~ log(x)")
  }else{
    # Linear regression
    smooth.call[[1]] <- …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 ggpmisc

6
推荐指数
1
解决办法
8623
查看次数

在SEPARATE LINES图上添加回归线方程和R2

几年前,一张海报询问如何在下面的链接中添加回归线方程和R2在ggplot图上.

在图上添加回归线方程和R2

最重要的解决方案是:

lm_eqn <- function(df){
    m <- lm(y ~ x, df);
    eq <- substitute(italic(y) == a + b %.% italic(x)*","~~italic(r)^2~"="~r2, 
         list(a = format(coef(m)[1], digits = 2), 
              b = format(coef(m)[2], digits = 2), 
             r2 = format(summary(m)$r.squared, digits = 3)))
    as.character(as.expression(eq));                 
}

p1 <- p + geom_text(x = 25, y = 300, label = lm_eqn(df), parse = TRUE)
Run Code Online (Sandbox Code Playgroud)

我正在使用此代码,它很有用.但是,我想知道是否有可能使这段代码在单独的行上具有R2值和回归线方程,而不是用逗号分隔.

而不是像这样

而不是像这样

像这样的东西

像这样的东西

在此先感谢您的帮助!

regression r ggplot2 ggpmisc

6
推荐指数
2
解决办法
2193
查看次数

我们能否将回归方程与 R2 和 p 值整齐对齐?

将回归方程、R2 和 p 值(对于方程)巧妙地添加到ggplot图中的最佳(最简单)方法是什么?理想情况下,它应该与组和分面兼容。

第一个图具有回归方程加上使用ggpubr分组的 r2 和 p 值,但它们没有对齐?我错过了什么吗?它们可以作为一个字符串包含在内吗?

library(ggplot)
library(ggpubr)

ggplot(mtcars, aes(x = wt, y = mpg, group = cyl))+
  geom_smooth(method="lm")+
  geom_point()+
  stat_regline_equation()+
  stat_cor(aes(label = paste(..rr.label.., ..p.label.., sep = "*`,`~")),
           label.x.npc = "centre")
Run Code Online (Sandbox Code Playgroud)

情节1

这是ggpmisc 的一个选项,它做了一些奇怪的放置。
编辑奇怪的位置是由 引起的geom=text,我已将其注释掉以提供更好的位置,并添加了 `label.x = "right" 以停止过度绘制。由于@dc37 标记的上标问题,我们仍然根据ggpubr存在未对齐问题

#/sf/answers/2639618271/
library(ggpmisc)

ggplot(mtcars, aes(x = wt, y = mpg, group = cyl))+
  geom_smooth(method="lm")+
  geom_point()+
  stat_poly_eq(formula = "y~x", 
             aes(label = paste(..eq.label.., ..rr.label.., sep = "*`,`~")), 
             parse = …
Run Code Online (Sandbox Code Playgroud)

label r ggplot2 ggpmisc ggpubr

6
推荐指数
2
解决办法
1747
查看次数

如何使用ggpmisc的stat_poly_eq在方程中显示不同的y标签

stat_poly_eq我正在尝试使用的函数在绘图上显示方程ggpmisc

我的问题是如何通过引用参数来改变方程中y= ...的。y1=...y2=...key

我尝试eq.with.lhs在映射中添加参数,但它无法识别该参数。我尝试将向量传递给eq.with.lhs参数,但它与每个方程中的两个元素重叠......

你有更好的主意吗?

在最后一种情况下,我可以geom_text自己计算方程系数后使用,但这似乎是解决问题的效率较低的方法。

这是我的问题的代表。

data <- data.frame(x = rnorm(20)) %>% 
    mutate(y1 = 1.2*x + rnorm(20, sd=0.2),
           y2 = 0.9*x + rnorm(20, sd=0.3)) %>%
    gather(value = value, key = key, -x)  

ggplot(data, aes(x = x, y = value)) +
    geom_point(aes(shape = key, colour = key)) + 
    stat_poly_eq(aes(label = ..eq.label.., colour = key), 
                 formula = y  ~ poly(x, 1, raw = TRUE),
                 eq.x.rhs = "x", …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 ggpmisc

5
推荐指数
1
解决办法
657
查看次数

R 包 ggpmisc:在回归方程中给 y 戴上帽子

我正在使用Rggpmisc。想知道如何在回归方程中将帽子放在 y 上,或者如何在图形的回归方程中获得自定义响应和解释变量名称。

library(ggplot2)
library(ggpmisc)

df <- data.frame(x1 = c(1:100))
set.seed(12345)
df$y1 <- 2 + 3 * df$x1 + rnorm(100, sd = 40)

p <- ggplot(data = df, aes(x = x1, y = y1)) +
  geom_smooth(method = "lm", se=FALSE, color="black", formula = y ~ x) +
  stat_poly_eq(formula = y ~ x, 
               aes(label = paste(..eq.label.., ..rr.label.., sep = "~~~")), 
               parse = TRUE) +         
  geom_point()
p
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

r ggplot2 ggpmisc

4
推荐指数
1
解决办法
1159
查看次数

如何用箭头和最大值注释线图?

我试图用箭头指向折线图中的最高点来注释折线图,并在绘图上显示箭头和最大值。我正在使用mtcars数据集作为参考。下面是我的代码。

e <- df$mpg
ggplot(df, aes(x=e, y=df$hp)) + 
  geom_line() + 
  annotate("segment", color="blue", x=max(e), xend = max(e), y=max(df$hp), 
            yend=max(df$hp), arrow=arrow())
Run Code Online (Sandbox Code Playgroud)

提前致谢,

annotations r ggplot2 ggpmisc

2
推荐指数
2
解决办法
1085
查看次数

在 annotate() 中使用 npc 单位

我有一个 ggplot 对象。我想添加一些带有 的文本annotate(),并且我想以 npc 单位指定文本的坐标。这可能吗?

这个最小的例子演示了文本通常是如何定位的annotate()

library(ggplot2)
p <- ggplot(mtcars, aes(mpg, wt)) + geom_point()
p + annotate("text", x = 30, y = 4.5, label = "hello")
Run Code Online (Sandbox Code Playgroud)

我想达到相同的效果,但不是在本地坐标中指定xy,我想用 npc 坐标指定它们。出于本示例的目的,我并不担心准确地转换x = 30y = 4.5转换为 npc 单位。我只是想知道是否可以使用npc单位annotate()

有两种相关的策略,但它们并不完全令人满意:

  1. 人们可以通过将它们指定为,例如,来使用 npc 单位grid::textGrob()。然后可以将grob放置在annotation_custom(),如@baptiste 的这个答案中所示。但是这个解决方案比我想要的要麻烦一些。

  2. “ggpmisc”包包括geom_text_npc(). 但它还不适用于annotate(). 也就是说,annotate("text_npc", ...)似乎不起作用。[编辑:它现在可以工作了。见下面佩德罗·阿法洛的消息。]

还有很多相关的帖子。特别是,Greg Snow 建议使用网格创建一个具有 …

grid r coordinates ggplot2 ggpmisc

2
推荐指数
1
解决办法
334
查看次数

facet_wrap 文本标签问题与 stat_fit_glance

我想知道为什么文本在图中的趋势更高......它不会与 facet_wrap 或 facet_grid 保持一致。在更复杂的数据集图中,由于重叠,文本难以辨认。

以下是重现情节和问题的数据和代码。将 geom="text" 添加到 stat_fit_glance,结果是Error: Discrete value supplied to continuous scale.在此处输入图片说明

library(ggpmisc)
library(ggplot2)

DF <- data.frame(Site = rep(LETTERS[20:24], each = 4),
                 Region = rep(LETTERS[14:18], each = 4),
                 time = rep(LETTERS[1:10], each = 10),
                 group = rep(LETTERS[1:4], each = 10),
                 value1 = runif(n = 1000, min = 10, max = 15),
                 value2 = runif(n = 1000, min = 100, max = 150))
DF$time <- as.numeric(DF$time)
formula1 <- y~x
plot1 <- ggplot(data=DF, 
                aes(x=time, y= value2,group=Site)) + …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 facet-wrap ggpmisc

1
推荐指数
1
解决办法
577
查看次数

标签 统计

ggplot2 ×11

ggpmisc ×11

r ×11

annotations ×1

coordinates ×1

facet-wrap ×1

ggpubr ×1

grid ×1

label ×1

lm ×1

nls ×1

regression ×1