'How to put a black border around certain dots on a ggplot geom_point plot

I am trying to make a geom plot using ggplot for some pathways of interest. I would like to put a black border around certain dots that are significant. -log10 > 1.2, so they are easier to identify. Is there anyway to do this in the package so I do not have to do in an illustrator package after I have produced the image? Thank you kindly for advice.

  • Image of current dot image: enter image description here

  • Image of raw data: enter image description here

cols <- c("blue",
          "white",
          "red")

li <- c(-2, 2)

D1 <- ggplot(Practice, aes(Practice$case, Practice$pathway, 
      colour = Enrichment_score, size = Practice$ln)) +
  geom_point(alpha = 0.8) + 
  scale_colour_gradientn(colours = cols) +
  theme(legend.position="bottom") +
  scale_size(breaks = c(0, 1.2, 1.4), range =  c(0.06,12)) +
  guides(size=guide_legend(title = "-log10(q value)"),
         scale_colour_gradient()) +
  labs(colour = "Enrichment Score") +
  theme_bw()
  
D1 + ggtitle("") +
  xlab("") + ylab("") + 
  scale_x_discrete(limits=c("Responder vs Non-responder",
                            "Non-responder vs Control", 
                            "Responder vs Control", 
                            "Case vs Control"))


Solution 1:[1]

Another way, which may be simpler, is to use shape 21 with geom_point:

library(ggplot2)

ggplot(mtcars, aes(factor(cyl), mpg)) +
  geom_point(shape = 21,  stroke = 1, aes(colour = disp >= 250, fill = hp)) +
  scale_colour_manual(values = c(`TRUE` = "black", `FALSE` = rgb(0,0,0,0)))


The manual colour scale makes the edge of shape 21 either black or transparent. Note the backticks for TRUE or FALSE.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 dash2