[R] ggplot: add points selectively to curves

Michael Friendly friendly at yorku.ca
Wed Apr 2 16:43:23 CEST 2014

I'm working on an example of plotting predicted probabilities from a 
proportional odds model.
The steps below generate a data frame, plotdat, that I want to plot with 

data("Arthritis", package="vcd")
arth.polr <- polr(Improved ~ Sex + Treatment + Age, data=Arthritis, 

# get predicted probs for categories of Improve
arth.fitp <- cbind(Arthritis,
                   predict(arth.polr, type="probs"))

# reshape probs to long
plotdat <- melt(arth.fitp,
                 id.vars = c("Sex", "Treatment", "Age", "Improved"),
                 measure.vars=c("None", "Some", "Marked"),
                 variable.name = "Level",
                 value.name = "Probability")
## view first few rows

 > head(plotdat)
    Sex Treatment Age Improved Level Probability
1 Male   Treated  27     Some  None   0.7326185
2 Male   Treated  29     None  None   0.7174048
3 Male   Treated  30     None  None   0.7096042
4 Male   Treated  32   Marked  None   0.6936286
5 Male   Treated  46   Marked  None   0.5702499
6 Male   Treated  58   Marked  None   0.4563432

In the plot step, I am plotting Probability vs. Age, stratified by 
Level, and faceted by
Sex and Treatment.  My question concerns the use of geom_point().
The call below plots 3 points for each case, one on each Level curve.

ggplot(plotdat, aes(x = Age, y = Probability, color = Level)) +
     geom_line(size=2.5) + theme_bw() + xlim(10,80) +
     geom_point(color="black", size=1.5) +
     facet_grid(Sex ~ Treatment,
                labeller = function(x, y) sprintf("%s = %s", x, y)

I want to plot only one point for each case, for the value of Level that 
to the value of Improved in this data set.  Somehow, this involves something
like an aes() argument to geom_point(), with Level indexed by Improved, 
or some such.
How can I do this?

Michael Friendly     Email: friendly AT yorku DOT ca
Professor, Psychology Dept. & Chair, Quantitative Methods
York University      Voice: 416 736-2100 x66249 Fax: 416 736-5814
4700 Keele Street    Web:   http://www.datavis.ca
Toronto, ONT  M3J 1P3 CANADA

More information about the R-help mailing list