[R] Graphs for scientific publication ?
Jeremy Clark
jeremyclarkbio at gmail.com
Mon May 4 12:13:25 CEST 2015
Dear All,
Many thanks for your very comprehensive replies. Here I provide some
coding which on my system has the following effects:
1) The italic R is not rendered by CairoX11, but is rendered by quartz.
2) Both geom_smooth and geom_abline here give stepped lines (I've
realised the angle of the line makes quite a difference to this). I
presume that these are not "anti-aliased" - so I was hoping that Cairo
would change this. Unfortunately the command Cairo() does not open any
device, and the CairoX11 device gives similar lines to that from
quartz.
3) As I must turn off general clipping (because I need to add some
text which overlaps the plot edge) it would be useful to be able to
clip particular lines to the plot edge - although this is not a
catastrophe as I can create a new truncated dataframe and plot the
lines from this.
My system is MacBook Air, with all Xcode recently updated including
IOS 8.2, OS X 10.10, Xcode 6.2. I previously, and fairly recently,
installed X11 (and Xquartz), and also updated R and R Cairo, but none
of this has affected the above behaviour.
Any advice gratefully received.
Yours sincerely,
Jeremy Clark
library(ggplot2)
library(grid)
library(Cairo)
theme_jack <- function (base_size = 16, base_family = "") {
theme_classic(base_size = base_size, base_family = base_family) %+replace%
theme(
plot.title = element_text(size=15, vjust=3),
axis.text = element_text(colour = "black", family="Times",
face=c('bold'), size = 18),
axis.title.x = element_text(colour = "black",
family="Times", face=c('bold'), vjust = -1, size =
20),
axis.title.y = element_text(colour = "black",
family="Times", angle=90, face=c('bold'), vjust= 2, size = 20),
panel.background = element_rect(fill="white"),
panel.grid.minor = element_blank(),
panel.grid.major = element_blank(),
plot.background = element_rect(fill="white"),
panel.border = element_blank(),
panel.background = element_blank(),
plot.margin=unit(c(1,1.5,1.3,1.3),"cm")
)
}
theme_set(theme_jack())
DataX <- seq(1, 40, by = 1)
DataY <- seq(1, 40, by = 1)
Datadf <- data.frame(DataX, DataY)
## replace "quartz" with "CairoX11" or "X11" for various effects:
quartz(width = 6 , height = 6) ## quartz renders the italic R correctly
p1 <- ggplot() + ggtitle("Title") + coord_cartesian(xlim = c(1, 40),
ylim = c(0, 40)) + scale_y_continuous(breaks = c(0, 10, 20, 30),
labels = c("0", "10", "20", "30"), expand = c(0, 0)) + ylab("Y-axis")
+ scale_x_continuous(breaks = c(10, 20, 30, 40), expand = c(0, 0)) +
geom_point(data = Datadf, aes(x = DataX, y = DataY)) + xlab("X-axis")
predy <- as.integer(c(38, 25, 20, 14, 8))
predx <- as.integer(c(20, 21, 22, 24, 25))
datapreddf <- as.data.frame(predx, predy)
myplm <- lm(predy ~ predx, data = datapreddf)
lmxrange <- data.frame(predx = seq(from = 20, to = 30, by = 0.01))
lmyrange <- predict.lm(myplm, newdata <- lmxrange)
lmdataframe <- data.frame(lmxrange, lmyrange)
p2 <- p1 + geom_smooth(data = lmdataframe, aes(x = predx, y =
lmyrange), method=lm, se=FALSE, color = "black") +
geom_abline(aes(intercept = as.vector(coefficients(myplm)[1]),
slope=as.vector(coefficients(myplm)[2]+2)), data=lmdataframe) ## both
give stepped lines in both quartz and CairoX11
rsquaredlm = NULL
rsquaredlm[[6]] <- 3 ## false value
listr2 <- list(r2 = rsquaredlm[[6]])
eq1 <- substitute(italic(R)^2 == r2, listr2)
eqstr1 <- as.character(as.expression(eq1))
q3 <- p2 + annotate(geom = "text", x = 20, y = 30, label = eqstr1,
parse = TRUE, vjust = 1)
gt <- ggplot_gtable(ggplot_build(q3))
gt$layout$clip[gt$layout$name=="panel"] <- "off" ## (necessary to
allow additional text
## overlap - not shown) - clipping of lines can be done with other
coding - although it
##would be nice to be able to do this more efficiently
grid.draw(gt)
## _____________________________________________
Cairo() ## doesn't open any device
More information about the R-help
mailing list