ggplot: adjusting alpha/fill two factors cdf

2019-05-02 17:14发布

问题:

I'm having some issues getting my ggplot alpha to be sufficiently dark for my plot.

Example code:

ggplot(mtcars, aes(x=mpg, color=factor(gear), alpha=factor(carb))) + stat_ecdf()

As you can see, whenever carb == 1, it's very difficult to see the plot elements. In my real world data set, the factor for color has four levels and the alpha factor has two levels. I was hoping to have the alpha a slightly lighter shade of the color, but more visible than how it's occurring in that example).

回答1:

You can adjust the alpha scale, as the user in the comment suggests, either by specifying a range or a specific set breaks to scale_alpha_discrete. That doesn't produce a very easy-to-read result, though:

ggplot(mtcars, aes(x=mpg, color=factor(gear), alpha=factor(carb))) + 
  stat_ecdf() + 
  scale_alpha_discrete(range=c(0.4, 1))

Another option would be to save color for the many-leveled factor and choose a different aesthetic for the few-leveled one, like maybe linetype

ggplot(mtcars, aes(x=mpg, linetype=factor(gear), color=factor(carb))) + 
  stat_ecdf()

For readability, though, faceting might be a better bet.

ggplot(mtcars, aes(x=mpg, color=factor(carb))) + 
  stat_ecdf() + facet_wrap(~gear, nrow=3)