Superscript R squared for legend

Learn superscript r squared for legend with practical examples, diagrams, and best practices. Covers r, legend development techniques with visual explanations.

Displaying Superscript R-squared in R Legends

A scatter plot with a regression line and a legend showing R-squared with a superscript 2.

Learn how to correctly format and display R-squared values with superscripts within plot legends in R, enhancing the clarity and professionalism of your statistical visualizations.

When presenting statistical models, especially linear regressions, the R-squared value is a crucial metric. Often, it's desirable to display this value directly on the plot, typically within the legend, with the '2' in R-squared rendered as a superscript. This article will guide you through the process of achieving this in R, using base graphics and ggplot2.

Understanding R's Plotmath for Superscripts

R's plotting functions use a special language called plotmath to render mathematical expressions, including superscripts, subscripts, Greek letters, and more. To create a superscript, you use the ^ operator. For example, R^2 would render 'R' with a superscript '2'. However, directly embedding this into a string for a legend requires careful handling, often involving the expression() function.

flowchart TD
    A["Start: Need R^2 in Legend"] --> B{"Using Base R Graphics?"}
    B -->|Yes| C["Use expression(R^2)"]
    C --> D["Combine with text: expression(paste('R-squared = ', R^2))"]
    D --> E["Pass to legend() or text() function"]
    B -->|No| F{"Using ggplot2?"}
    F --> G["Use bquote(R^2)"]
    G --> H["Combine with text: paste0('R-squared = ', bquote(R^2)) or glue()"]
    H --> I["Pass to labs() or annotate() function"]
    E --> J["End: R^2 in Legend"]
    I --> J

Decision flow for rendering R-squared with superscript in R plots.

Superscript R-squared in Base R Graphics

For base R plots, the expression() function is your primary tool for creating mathematical annotations. You can combine text and mathematical expressions using paste() within expression() to build complex legend entries. The key is to ensure the R^2 part is correctly interpreted by plotmath.

# Sample data
x <- 1:10
y <- 2*x + rnorm(10, sd=1)

# Fit a linear model
model <- lm(y ~ x)

# Extract R-squared value
r_squared <- summary(model)$r.squared

# Create the plot
plot(x, y, main = "Base R Plot with Superscript R-squared",
     xlab = "X-axis", ylab = "Y-axis")
abline(model, col = "red")

# Create the legend entry with superscript R-squared
# Using bquote for dynamic R-squared value
legend_text <- bquote(R^2 == .(format(r_squared, digits = 3)))

# Add legend to the plot
legend("topleft", legend = legend_text, col = "red", lty = 1)

Example of displaying R-squared with a superscript in a base R plot legend.

Superscript R-squared in ggplot2

ggplot2 offers more flexibility, but the approach to plotmath expressions is slightly different. While expression() can work, bquote() is often more convenient for dynamically inserting R-squared values. You can use bquote() within labs() for titles/subtitles or annotate() for direct plot annotations.

library(ggplot2)

# Sample data
df <- data.frame(x = 1:10, y = 2*(1:10) + rnorm(10, sd=1))

# Fit a linear model
model_gg <- lm(y ~ x, data = df)

# Extract R-squared value
r_squared_gg <- summary(model_gg)$r.squared

# Create the plot
ggplot(df, aes(x, y)) +
  geom_point() +
  geom_smooth(method = "lm", se = FALSE, color = "blue") +
  labs(title = "ggplot2 Plot with Superscript R-squared") +
  # Add R-squared to the plot using annotate
  annotate("text", x = 2, y = max(df$y), 
           label = bquote(R^2 == .(format(r_squared_gg, digits = 3))), 
           hjust = 0, vjust = 1, size = 5)

Example of displaying R-squared with a superscript in a ggplot2 plot annotation.