Home > Back-end >  How can I control the error bar colors to be the same as geom_point colors?
How can I control the error bar colors to be the same as geom_point colors?

Time:01-12

I wanted to make a point plot in ggplot and I used geom_point function to do it. To colorize the points, I used levels to fill them either in red or blue. However, now I'm adding the error bars to my point plot with geom_errorbar function, it seems I can't give the colors I used in geom_points. In other words, I can only give them one color, which is by default black. Is there any way I can control the color of the error bars?

Let's say we have the following data frame:

df <- data.frame (Xvalue=c(1.2, 1.3, 2.1, 2.4, 2.7),
                 Yvalue=c(12, 15, 17, 24, 27),
                 Kind=c('A', 'B', 'A', 'B', 'B'),
                 Ymax=c(13, 16, 19, 26, 29),
                 Ymin=c(11, 14, 15, 22, 25))
df$Kind = factor(df$Kind)

Now I want to draw the plot with the error bars:

myplot <- ggplot (df, aes(Xvalue, Yvalue, fill=Kind))   
  geom_point( shape=21, size= 4, alpha= 0.7) 
  geom_errorbar(aes(ymin=Ymin, ymax=Ymax,  width=0.08))
myplot

enter image description here This results in a plot with error bars of black. How can I make sure this is the same color as the points?

Bonus question: Is this how you would usually make two colors in your points, I mean by putting the "levels" in the ggplot function as fill? Do you have an alternative way to where one doesn't need to use Shape=21, where the outer pirameter of the circle is black?

Bonus qeustion 2: Is it generally easier to plot two kinds of points, when they are in 1 dataframe, or is it better to seperate the dataframes? For instance, I can have a smaller dataframe for the Kind A, and another one for dataframe B. Would that make the life easier? Why I'm asking is that, when I tried to plot with more than one levels (for instance once "Kind" and the other one "Original country"), it was quite confusing to plot points in different colors and sizes.

CodePudding user response:

You should add the color aes to your geom_errorbar like this (Please note: you could add show.legend FALSE to your geom_errorbar so there is no line in your elements of your legend):

library(ggplot2)
myplot <- ggplot (df, aes(Xvalue, Yvalue, fill=Kind))   
  geom_point( shape=21, size= 4, alpha= 0.7) 
  geom_errorbar(aes(ymin=Ymin, ymax=Ymax, width=0.08, color = Kind), show.legend = FALSE)
myplot

Created on 2023-01-12 with reprex v2.0.2

If you want the error bar behind your point, just swap the commands in order.

  • Related