I need to create an x-y plot where some observations are depicted as points and others are as lineranges (as in my dataset I have different observations of either a point estimate or just a range of the y-value with an upper and lower limit).
Importantly, I have two grouping variables that I would like to have mapped in the plot.
One grouping variable can be mapped through color-coding. But a second one is tricky, given the limited shape opportunities of a linerange.
So, my idea was to map the second grouping variable through the linetype of the geom_linerange (i.e. solid / long-dashed / short-dashed) and match the border lines of the geom_point objects to these linetypes.
I have tried to generate a reproducible example:
Data <- mtcars[1:6,] %>% rename(xone = drat, xtwo = wt, y = mpg, lower = hp, upper = disp, groupone = cyl, grouptwo = carb) %>% mutate(groupone = as.factor(groupone), grouptwo = as.factor(grouptwo), y = y*8) ggplot(Data) + geom_point(aes(x = xone, y = y, shape = groupone, fill = grouptwo, size = 1.3, stroke = 1.2)) + scale_shape_manual(values = 21:24) + geom_linerange(aes(ymin = lower, ymax = upper, x = xtwo, color = groupone, linetype = grouptwo, lwd = 1.1))
This gives me:
That means, in this concrete example I want the borders of my points to be either solid, long-dashed or short-dashed, mapped to the grouping factor "grouptwo".
After a long search, I did not come across any solutions for this problem. Any help is very much appreciated!