-
Notifications
You must be signed in to change notification settings - Fork 165
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changing the number of significant digits shown with stat_cor #114
Comments
Hi @raedevan6. I figured this out just by using stat_poly_eq. However, I am not sure how to independently adjust the R^2 values now. I know I can adjust them together, but I'd like for them to event out by declaring rr.digits 2 for one regression line and rr.digits = 3 for the other regression line. @kassambara |
Related issue: #186 |
New arguments Applying different digits for each regression line on the same plot is not supported by I don't know how to achieve this automatically in ggplot context. I would suggest the following (manual) solution: library(ggpubr)
library(dplyr)
df <- mtcars
paste("italic(R)^2", ..rr.., sep = "~`=`~")
#> Error in paste("italic(R)^2", ..rr.., sep = "~`=`~"): objet '..rr..' introuvable
df$cyl <- as.factor(df$cyl)
# Prepare data for each group
grp1.df <- df %>% filter(cyl == "4")
grp2.df <- df %>% filter(cyl == "6")
grp3.df <- df %>% filter(cyl == "8")
# Plot
ggplot(df, aes(wt, mpg, color = cyl)) +
geom_point() +
geom_smooth(method = "lm") +
stat_cor(label.x = 3, label.y = 34, digits = 3, data = grp1.df)+
stat_cor(label.x = 3, label.y = 32, digits = 2, data = grp2.df) +
stat_cor(label.x = 3, label.y = 30, digits = 1, data = grp3.df) Created on 2020-02-12 by the reprex package (v0.3.0) |
Hi @kassambara. Thanks for implementing the digits variable to stat_cor. I was just curious if there was a method to keep trailing 0s? I specified digits = 2, but it deletes my trailing 0. Thank you. |
Hi, for advanced p-value formatting, I would suggest the function library(ggpubr)
# Custom formatting fucntion
format_pval <- function(pval){
pval <- scales::pvalue(pval, accuracy= 0.001, add_p = TRUE)
gsub(pattern = "(=|<)", replacement = " \\1 ", x = pval)
}
# Display formatted p-value
ggscatter(mtcars, x = "wt", y = "mpg", add = "reg.line") +
stat_cor(
aes(label = paste(..rr.label.., format_pval(..p..), sep = "*`,`~")),
label.x = 3
)
#> `geom_smooth()` using formula 'y ~ x' Created on 2020-05-09 by the reprex package (v0.3.0.9001) |
Hi @kassambara. Thanks for the explanation. However, I am looking to keep a trailing 0 in the R^2 value. Is there a current method of doing this? Sorry for the confusion. |
With the latest dev version, you can now specify the argument suppressPackageStartupMessages(library(ggpubr))
# Default plot
sp <- ggscatter(mtcars, x = "wt", y = "mpg", add = "reg.line")
sp + stat_cor(label.x = 3)
#> `geom_smooth()` using formula 'y ~ x' # Specify the number of decimal places of precision for
# the p-value and the correlation coefficient r
sp + stat_cor(label.x = 3, p.accuracy = 0.001, r.accuracy = 0.01)
#> `geom_smooth()` using formula 'y ~ x' Created on 2020-05-10 by the reprex package (v0.3.0.9001) |
Hi @kassambara. The above suggestion to including trailing zeros for the correlation coefficient by setting r.accuracy isn't working for me. I have tried both the current CRAN version of ggpubr and the dev version. For my case, the R2 always shows as 0.6 in the plot rather than 0.60. From what I can gather, ..rr.label.. is correctly set at "0.60" but when it gets passed into the R expression format, that removes the trailing zero. Do you see any way around that? Here's a reproducible example that manually sets a number in the label to be 0.60 to demonstrate: sp <- ggscatter(mtcars, x = "wt", y = "mpg", add = "reg.line")
sp + stat_cor(aes(label = paste(0.60, ..p.label.., sep = "~`,`~")), label.x = 3, r.accuracy = 0.01) Thanks |
Hello, forgive me if this an easy fix. I'm trying to change the number of digits shown on the plot for both R2 and pvals. Below is my code, I would like to only show 3 sig digits.
ggplot(pxsam, aes(x=cbi, y=value, color=phy)) + geom_point() +
geom_smooth(method = "lm") + theme_pubr() +
ggpubr::stat_cor(
aes(label = paste(..rr.label.., ..p.label.., sep = "
"))),
The text was updated successfully, but these errors were encountered: