Colorize parts of the title in a plot

前端 未结 3 1401
予麋鹿
予麋鹿 2020-12-14 01:58

Is it possible to colorize parts of the title in a plot?

x = 1:10
y = 1:10
plot(x, y, main=\"title (slope=1)\")

In this plot I\'d like to c

相关标签:
3条回答
  • 2020-12-14 02:12

    A solution for ggplot2 plots using the ggtext package

    library(ggplot2)
    # devtools::install_github("clauswilke/ggtext")
    library(ggtext)
    
    p <- ggplot(mtcars, aes(mpg, wt, colour = cyl)) + 
      geom_point(size = 3)
    
    p + 
      labs(title = "New plot <b style='color:#009E73'>title</b>", 
           subtitle = "A <b style='color:#D55E00'>subtitle</b>") +
      theme_classic(base_size = 24) +
      theme(plot.title = element_markdown(lineheight = 1.1),
            plot.subtitle = element_markdown(lineheight = 1.1))
    

    Created on 2019-08-11 by the reprex package (v0.3.0)

    0 讨论(0)
  • 2020-12-14 02:15

    The ggtext package can do this

    library(ggtext) #remotes::install_github("wilkelab/ggtext")
    
    ggplot(iris, aes(Sepal.Length, Sepal.Width, color = Species)) +
      geom_point(size = 3) +
      scale_color_manual(
        name = NULL,
        values = c(setosa = "#0072B2", virginica = "#009E73", versicolor = "#D55E00"),
        labels = c(
          setosa = "<i style='color:#0072B2'>I. setosa</i>",
          virginica = "<i style='color:#009E73'>I. virginica</i>",
          versicolor = "<i style='color:#D55E00'>I. versicolor</i>")
      ) +
      labs(
        title = "**Fisher's *Iris* dataset**  
        <span style='font-size:11pt'>Sepal width vs. sepal length for 
        <span style='color:#0072B2;'>setosa</span>, 
        <span style='color:#D55E00;'>versicolor</span>, and
        <span style='color:#009E73;'>virginica</span>
        </span>",
        x = "Sepal length (cm)", y = "Sepal width (cm)"
      ) +
      theme_minimal() +
      theme(
        plot.title = element_markdown(lineheight = 1.1),
        legend.text = element_markdown(size = 11)
      )
    
    0 讨论(0)
  • 2020-12-14 02:17

    This is a quite simple solution to your problem:

    plot(x, y)
    title(expression("title (" * phantom("slope=1)") * ")"), col.main = "black")
    title(expression(phantom("title (") * "slope=1"), col.main = "red")
    

    enter image description here

    0 讨论(0)
提交回复
热议问题