Since you only have two variables you're adjusting for, one of which is a 2-category factor, the easiest way to visualize the whole thing would just be by using some colouring and symbols:
# simulate data set.seed(1234) age <- round(rnorm(30, 40, 10)) sex <- round(runif(30, 0, 1)) bodyfat <- rnorm(30, 10 + 5 * sex + age / 10, 3) bloodpressure <- rnorm(30, 55 + bodyfat * 2 + age / 10, 5) # plot original with color and pch set to other variables cols <- colorRampPalette(c("blue", "black", "red"))(30) par(mfrow = c(1, 1)) plot(bloodpressure ~ bodyfat, col = cols[order(age)], pch = sex + 17) legend("bottomright", legend = c("male", "female"), pch = 17:18)

You could add a colour scale to your legend for age.
Alternatively, you could adjust bodyfat for age and sex, although this loses its easy interpretation. If you want to adjust as you propose in your question—by regressing body fat on age and sex—you should add the intercept of this model to the residuals, not the mean.
This is equivalent to subtracting $\beta_1 \cdot \text{age}$ and $\beta_2 \cdot \text{sex}$ from the body fat percentage in:
$$\text{body fat percentage} = \beta_0 + \beta_1 \cdot \text{age} + \beta_2 \cdot{sex} + \epsilon$$
That would look like this:
# plot blood pressure vs adjusted bodyfat LM <- lm(bodyfat ~ age + sex) adjusted_BF <- (coef(LM)[1] + resid(LM)) par(mfrow = c(1, 2)) plot(bloodpressure ~ bodyfat) plot(bloodpressure ~ adjusted_BF)

As expected, the relationship observed in the right scatter plot is slightly weaker after adjusting for the effects of age and sex.
However, looking at partial correlations is more like adjusting both variables for the remaining variables:
LM2 <- lm(bloodpressure ~ age + sex) adjusted_BP <- coef(LM2)[1] + resid(LM2) plot(adjusted_BP ~ adjusted_BF)

But again, be careful not to mislead your readers with this, as these axes no longer represent blood pressure and body fat.