In the graph below, the direct positions of the labels were set a little vertically, but they are cropped to the left / right edges. Is there a way to avoid cropping (similar to xpd=TRUE ) or adjust cropped marks inward in frames?

Here is the code for this example:
library(car) library(reshape2) library(ggplot2) library(directlabels) library(nnet) ## Sec. 8.2 (Nested Dichotomies) # transform data Womenlf <- within(Womenlf,{ working <- recode(partic, " 'not.work' = 'no'; else = 'yes' ") fulltime <- recode(partic, " 'fulltime' = 'yes'; 'parttime' = 'no'; 'not.work' = NA")}) mod.working <- glm(working ~ hincome + children, family = binomial, data = Womenlf) mod.fulltime <- glm(fulltime ~ hincome + children, family = binomial, data = Womenlf) predictors <- expand.grid(hincome = 1:50, children = c("absent", "present")) fit <- data.frame(predictors, p.working = predict(mod.working, predictors, type = "response"), p.fulltime = predict(mod.fulltime, predictors, type = "response"), l.working = predict(mod.working, predictors, type = "link"), l.fulltime = predict(mod.fulltime, predictors, type = "link") ) fit <- within(fit, { `full-time` <- p.working * p.fulltime `part-time` <- p.working * (1 - p.fulltime) `not working` <- 1 - p.working }) # Figure 8.10 fit2 = melt(fit, measure.vars = c("full-time","part-time","not working"), variable.name = "Participation", value.name = "Probability") gg <- ggplot(fit2, aes(x = hincome, y = Probability, colour = Participation)) + facet_grid(~ children, labeller = function(x, y) sprintf("%s = %s", x, y)) + geom_line(size = 2) + theme_bw() direct.label(gg, list("top.bumptwice", dl.trans(y = y + 0.2)))