Note: This initial blog post is discontinued. If you want to have the latest development of the function have a look at the static page PlotHR
Usually a Coxregression is achieved in R by
library(survival)
model < coxph ( SuvivalObject ~ Covariate1 + Covariate2 + Factor1 + Factor2 , data = Dataset )
The covariates can be enclosed in other funtions:
 factors should be enclosed by factor()
 strata, which allow to adjust for a factor without getting an estimate, should be enclosed by strata()
 nonlog linear continuous terms can be enclosed by
pspline()
In the latter case the model might look like
model < coxph (SurvivalObject ~ pspline(Covariate1) + Covariate2 + factor(Factor1) + strata(Factor2) , data = Dataset )
The functional form of the covariates (including the factors) can now be plotted with
termplot(model)
Though the termplot() function fails with plotting just one covariate and leaves no cusomization.
The function plotHR() plots the functional form of the desired term: plotHR(model)
plots the first term in the model by default but other terms can be accessed by calling their number (e.g. the second one):
plotHR(model , terms = 2)
In order to use the function you have to “source” it into R. It is the same procedure as calling a package, but using “source” instead of “library”.
Paste the function syntax into a textfile and safe it (as plot.HR.R) on your harddisk, remember the path and include
source("C:Path/to/plotHR_0.6.R")
before using the function.
Download plotHR()
Note: I have rewritten the function several times since I wrote the initial post … using version numbers now …

V0.6 – removed the y.log option, since the scale should be logaritmic anyway. Later I will also rewrite the x.log option, since the feature is already incorporated in the plot.default() function. I also removed the dottet line at HR=1 level, since some complained about it overstating the importance of the log(HR) intercept. I included it, since it gives a hint about the significance of the smooth term, in case the confidence intervalls cross over the line… Those who miss it can add manually
lines( h = 0 , type = 2 )
I rewrote the “rugs” option. Try
rugs = "density"
It is still “beta”ish, but some like it.  V0.5 – bug fix for the yscale and slight adjustment of the default plotting colors (paler CI shade and stronger termline)
 V0.4 – the yscale should be logarithmic; a HR of 0.5 (50% reduced Hazard) should show the same distance from HR = 1 as a doubled Hazard (HR = 2); this is now default. The linear scale I used initially is biased in this concern (Hattip: Arve Ulvik, Eva Pedersen and Roy Nilsen). The option y.log allows both ways (linear and logscale); the axis labels denote Hazard Ratio instead of log(HR).
Usage:
plotHR( model , terms = 1 , se = TRUE , rug = "ticks" , x.log = FALSE , xlab = "" , ylab = "Hazard Ratio" , main = NULL , xlim = NULL , ylim = NULL, col.term = "#08519C", lwd.term = 3, col.se = "#DEEBF7", cex = 1 , bty = "n" , axes = TRUE )
 model – a coxph model
 terms – integer; the number of the term to plot
 se – logical TRUE/FALSE; plotting the CI
 rug – “ticks” or “density”; rug plot or density plot at xaxis. Any other value for “rug” will omit the rugplot.
 x.log – logical TRUE/FALSE; logtransformed exposure variable
 xlab – character; xaxis label
 ylab – character; yaxis label
 main – character; main plot title
 xlim – 2×1 column vector; xrange of plot
 ylim – 2×1 column vector; yrange of plot
 col.term – color of HRcurve
 lwd.term – line width of HRcurve
 col.se – color of CI (if plotted)
 cex – numeric; size factor of labels
 bty – specifies the boxtype around the plot. See
?plot.default