Change ggplot2 colourbar tick marks to black

前端 未结 3 775
花落未央
花落未央 2021-01-02 09:26

In some of my plots I find it hard to see the tick marks in the colour bar. I haven\'t been able to find a documented way to change the colour of the ticks. All the examples

相关标签:
3条回答
  • 2021-01-02 10:09

    The pull request mentioned in another answer never made it into the ggplot2 code base, but this is now possible in a slightly different way in the development version (slated to be released as ggplot2 2.3):

    ggplot(df, aes(x, y, fill = val)) +
      geom_raster() +
      scale_fill_gradient(low = "#FFFFFF", high = "#de2d26") +
      guides(fill = guide_colourbar(barheight = unit( 3 , "in" ),
                                    ticks.colour = "black",
                                    ticks.linewidth = 1)) +
      theme_bw() +
      theme(line = element_line(colour = "#0000FF"))
    

    You can also add a frame, which may be useful when some of the colors in the colorbar are very light.

    ggplot(df, aes(x, y, fill = val)) +
      geom_raster() +
      scale_fill_gradient(low = "#FFFFFF", high = "#de2d26") +
      guides(fill = guide_colourbar(barheight = unit( 3 , "in" ),
                                    ticks.colour = "black",
                                    ticks.linewidth = 1,
                                    frame.colour = "black",
                                    frame.linewidth = 1)) +
      theme_bw() +
      theme(line = element_line(colour = "#0000FF"))
    

    0 讨论(0)
  • 2021-01-02 10:10

    EDIT: Please refer to the answer below by Claus Wilke.


    I have included the original answer below, but please note that it is now outdated and I do not recommend using it.

    I included the functionality to customize tick marks and legend borders in my fork of ggplot2. I have submitted a pull request, but thought I would let people know here in case they stumble on this question.

    Install my fork using the following code,

    if (!require(devtools))
      install.packages('devtools')
    install_github('paleo13/ggplot2')
    

    We can specify black marks using the following code,

    ggplot(df, aes( x, y, fill = val)) +
      geom_raster() +
      scale_fill_gradient(low = "#FFFFFF", high = "#de2d26") +
      theme_bw() +
      theme(line = element_line(colour = "#0000FF")) +
      guides(fill = guide_colourbar(barheight = unit(3, "in"),
       ticks=element_line(color='black'), border=element_line(color='black')))
    

    (I would have included this as a comment but I lack the reputation to do so, if anyone with sufficient privileges wants to delete this answer and move the contents to the comments then feel free)

    0 讨论(0)
  • 2021-01-02 10:17

    I usually find what I need to change by extensive use of str. I'm sure others can do it more elegantly.

    g <- ggplotGrob(p)
    g$grobs[[8]][[1]][[1]]$grobs[[5]]$gp$col <- "black"
    
    library(grid)
    grid.draw(g)
    

    enter image description here

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