相关疑难解决方法(0)

删除ggplot中的图层图例

另一个ggplot传奇问题!

我有一个表格的数据集

test <- data.frame(
  cond = factor(rep(c("A", "B"), each=200)), 
  value = c(rnorm(200), rnorm(200, mean=0.8))
)
Run Code Online (Sandbox Code Playgroud)

所以两组和一些值我想绘制密度.我还想在剧情中添加一行表示每组的平均值,所以我:

test.cdf <- ddply(test, .(cond), summarise, value.mean=mean(value))
Run Code Online (Sandbox Code Playgroud)

然后在ggplot调用:

ggplot(test, aes(value, fill=cond)) + 
  geom_density(alpha=0.5) + 
  labs(x='Energy', y='Density', fill='Group') + 
  opts(
    panel.background=theme_blank(), 
    panel.grid.major=theme_blank(), 
    panel.grid.minor=theme_blank(), 
    panel.border=theme_blank(), 
    axis.line=theme_segment()
  ) + 
  geom_vline(data=test.cdf, aes(xintercept=value.mean, colour=cond), 
    linetype='dashed', size=1)
Run Code Online (Sandbox Code Playgroud)

如果运行上面的代码,则会得到一个表示每个组的图例,但也会显示一个表示平均指示符vline的图例.我的问题是如何摆脱传说geom_vline()

r legend ggplot2

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

将具有相关系数的斜体r添加到ggplot中的散点图中

我尝试使用下面的代码生成,将有斜体的相关系数简单的散点图[R置于情节.

data(mtcars)

# Load required libraries
require(ggplot2)               # To derive the graphs
require(ggthemes)              # To apply ggplot themes to the chart
require(scales)                # For pretty breaks

# Function to generate correlation coefficient for the charts
corr_eqn <- function(x,y, digits = 2) {
  corr_coef <- round(cor(x, y), digits = digits)
  corr_coef <- expression(paste(italic(r)," = ", corr_coef))
  return(corr_coef)
}

# Provide a scatter plot for income and health deprivation
ggplot(mtcars, aes(x = drat, y = wt)) +
  geom_point(shape = 19, …
Run Code Online (Sandbox Code Playgroud)

expression annotations r scatter-plot ggplot2

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

如何将RMSE,斜率,截距,r ^ 2添加到R图中?

如何使用R将RMSE,斜率,截距和r ^ 2添加到绘图中?我附加了一个带有样本数据的脚本,这个格式与我的真实数据集类似 - 不幸的是,我处于静止状态.是否有更简单的方法将这些统计数据添加到图形中,而不是从等式创建对象并将其插入到text()?理想情况下,我希望将统计信息显示在图表上.我怎么能做到这一点?

## Generate Sample Data
x = c(2,4,6,8,9,4,5,7,8,9,10)
y = c(4,7,6,5,8,9,5,6,7,9,10)

# Create a dataframe to resemble existing data
mydata = data.frame(x,y)

#Plot the data
plot(mydata$x,mydata$y)
abline(fit <- lm(y~x))

# Calculate RMSE
model = sqrt(deviance(fit)/df.residual(fit))

# Add RMSE value to plot
text(3,9,model)
Run Code Online (Sandbox Code Playgroud)

statistics plot r

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

使用facet_wrap时,显示每个散点图的回归方程和R ^ 2

我有一个data.frame(我使用融化函数融化),我从中生成多个散点图并使用以下方法拟合回归线:

ggplot(dat, aes(id, value)) + geom_point() + geom_smooth(method="lm", se=FALSE) + facet_wrap(variable~var1, scales="free")
Run Code Online (Sandbox Code Playgroud)

我想在每个散点图中添加回归方程和R ^ 2 用于相关回归(即每个散点图中由geom_smooth产生的回归方程).


上面的var1只是融化数据的一个id列的名称,我面对与facet_wrap的facet_grid instad相同的问题.

r ggplot2

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

在散点图中添加对数回归线(与Excel比较)

在Excel中,它非常容易拟合给定趋势线集的对数趋势线.只需单击添加趋势线,然后选择"对数".切换到R更多功率,我有点失去了应该使用哪个函数来生成它.

为了生成图形,我使用ggplot2了以下代码.

ggplot(data, aes(horizon, success)) + geom_line() + geom_area(alpha=0.3)+
  stat_smooth(method='loess')
Run Code Online (Sandbox Code Playgroud)

但是代码进行局部多项式回归拟合,该拟合基于对许多小线性回归进行平均.我的问题是RExcel中是否存在类似的日志趋势线.

编辑:我正在寻找的另一种方法是得到一个形式为y =(c*ln(x))+ b的对数方程; 是否有一个coef()函数来获得'c'和'b'?

编辑2:由于我有更多的声誉,我现在可以发布更多关于我正在努力做的事情.让我的数据是:

0.599885189,0.588404133,0.577784156,0.567164179,0.556257176,0.545350172,0.535112897,
0.52449292,0.51540375,0.507271336,0.499904325,0.498851894,0.498851894,0.497321087,
0.4964600,0.495885955,0.494068121,0.492154612,0.490145427,0.486892461,0.482395714,
0.477229238,0.471010333
Run Code Online (Sandbox Code Playgroud)

上面的数据是y点,而x点只是1的整数:长度(y),增量为1.在Excel中:我可以简单地绘制这个并添加一个对数趋势线,结果如下:

在此输入图像描述

黑色是日志.在R中,如何使用上述数据集执行此操作?

regression r

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

如何在每个方面添加两个回归线方程和R2?

我想在每个方面添加两个回归线方程和R2.我采用Jayden的函数来解决问题,但我发现每个方程都是一样的.可能的原因是向函数发送了错误的数据子集.任何建议将被认真考虑!

我的代码:

p <- ggplot(data=df,aes(x=x))+
  geom_point(aes(y = y1),size=2.0)+
  geom_smooth(aes(y = y1),method=lm,se=FALSE,size=0.5,
              fullrange = TRUE)+ # Add regression line;
  annotate("text",x = 150,y =320, label = lm_eqn(lm(y1~x,df)), # maybe wrong
           size = 2.0, parse = TRUE)+ # Add regression line equation;

  geom_point(aes(y = y2),size=2.0)+
  geom_smooth(aes(y = y2),method=lm,se=FALSE,size=0.5,
              fullrange = TRUE)+ # Add regression line;
  annotate("text",x = 225,y =50, label = lm_eqn(lm(y2~x,df)),
           size = 2.0, parse = TRUE)+ # Add regression line equation;
  facet_wrap(~trt)
Run Code Online (Sandbox Code Playgroud)

我的数据帧:

x   y1  y2  trt
22.48349    34.2 …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 facet-wrap

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

如何找出ggplot的stat_smooth()拟合的线性回归线的斜率?

我使用 ggplot 和以下代码绘制了一个图:

ggplot(tb_us, aes(year_new, count)) + 
  geom_point() + 
  stat_smooth(method = 'lm')
Run Code Online (Sandbox Code Playgroud)

情节如下: 在此处输入图片说明

这一切都很好。但我也有兴趣找出这条线性拟合线的斜率。我怎样才能做到这一点?谢谢

r ggplot2

7
推荐指数
0
解决办法
3818
查看次数

在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
查看次数

为什么 geom_text() 多次绘制文本?

请考虑以下最小示例:

library(ggplot2)
library(ggrepel)
ggplot(mtcars) +
  aes(x = mpg, y = qsec) +
  geom_line() +
  geom_text(x = 20, y = 20, label = "(20,20)")
Run Code Online (Sandbox Code Playgroud)

过度绘制的文本

我想你可以很容易地看到文本“(20,20)”被严重过度绘制(实际上,我不知道这是否是正确的词。我的意思是文本在一个位置绘制了几次)。

如果我使用annotate(),这不会发生:

ggplot(mtcars) +
  aes(x = mpg, y = qsec) +
  geom_line() +
  annotate("text", x = 20, y = 20, label = "(20,20)")
Run Code Online (Sandbox Code Playgroud)

没有过度绘制的文本

“那么,你为什么不使用annotate()呢?” 你可能会问。实际上,我不想使用文本进行注释,而是使用标签。而且我还想使用 {ggrepel} 包来避免过度绘图。但是看看会发生什么,当我尝试这个时:

ggplot(mtcars) +
  aes(x = mpg, y = qsec) +
  geom_line() +
  geom_label_repel(x = 20, y = 20, label = "(20,20)")
Run Code Online (Sandbox Code Playgroud)

许多许多标签

同样,绘制了许多标签,{ggrepel} 在防止它们重叠方面做得很好。但我只想要一个指向特定位置的标签。我真的不明白为什么会发生这种情况。我只为 …

r ggplot2 geom-text

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

我们能否将回归方程与 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
查看次数