Improving resolution on geom_text entry in ggplot2 r
ggplot2, r
Solution
Why don't you save the onscreen plot using `ggsave`. What you see on-screen may not necessarily be what will render in output graphics using the pdf or ps devices. I did not see any problems using your un-edited code with R2.15.1 on Windows 7 using ggplot 0.9.1.
I saved your on-screen plot using `ggsave` and zoomed right in and the pdf looks great:
Use `ggsave("plot.pdf")` (there are several other optional arguments you can set, including saving as eps). This will save the last plot (by default) to the current working directory. Examine the plot. If the text still looks funny I would suggest that there might be something wrong with your Times font installation.
In which case you should try this omitting the font specification so R selects it's default font family.
You should also swicth to `theme` instead of `opts` and `element_text` instead of `theme_text` (at present!).
**EDIT**
Ok, I think I found the solution to your problem here thanks to kohske and mbask. Apparently better results can be acheived by creating a dataframe for your label and passing it to geom_text this way.
Try using:
df <- data.frame("x" = c(1,2,3,4),"y" = c(15,19,35,47))
lm_eqn = function(df){
m = lm(y ~ x, df)
eq <- substitute(italic(y) == a + b %.% italic(x)*","~~italic(r)^2~"="~r2,
list(a = format(coef(m)[1], digits = 2),
b = format(coef(m)[2], digits = 2),
r2 = format(summary(m)$r.squared, digits = 3)))
as.character(as.expression(eq))
}
### NEW ###
# Create a data frame to hold your label variables
data.label <- data.frame(
x = 0.015,
y = 0.08,
label = c(lm_eqn(df))
)
#creates basic plot and adds a line
p<-ggplot(df, aes(x,y))
p<- p + geom_point(alpha=1/10, colour="blue", size=5)
#controls background colours
p<-p + theme_bw()
#adds the labels, titles and makes them pretty
p<- p + geom_smooth(method="lm", se=FALSE, formula=y~x,colour="black")
p<- p + xlab("Species similarity for site pair (Tsim variable 'a')")
p<- p +ylab("Trait similarity for site pairs (Tsim)")
p<- p +opts(title="Species vs. Trait combination similarity 2-5m")
p<- p +opts(plot.title = theme_text(family="Times",face="bold", size=18, colour = "Black",vjust=1))
p<- p +opts(axis.title.x = theme_text(family="Times",face="bold", size=15, colour = "Black",vjust=0))
p<- p +opts(axis.title.y = theme_text(family="Times",face="bold", size=15, angle =90, colour = "Black",vjust=0.4))
### NEW
#### Change your call to geom_text ####
p<- p + geom_text(data = data.label, aes(x = x , y = y , label = label ) , size=6, family="Times" , face="italic" , parse = TRUE)
ggsave(p,file="tsim.a.0-2.pdf")
I got this on Mac OS X 10.7.4 and R 2.15.1:
Problem
Any suggestions on how improve the resolution on the geom_text so that the resolution is comparable to that of the axis labels? Thanks ``` df <- data.frame("x" = c(1,2,3,4),"y" = c(15,19,35,47)) p<-ggplot(df,aes(x,y)) p<- p + geom_point(size=1) p<- p + geom_smooth(method="lm", se=FALSE, formula=y~x) p<- p + xlab("Better Resolution") p<- p +ylab("Better Resolution") p<- p +opts(axis.title.x = theme_text(family="Times",face="bold", size=25, colour = "Black",vjust=0)) p<- p +opts(axis.title.y = theme_text(family="Times",face="bold", size=25, angle =90, colour ="Black",vjust=0.4)) p<- p + geom_text(aes(x = 3.5, y = 37, label ="123456789"),size=12, parse = TRUE) p #The zoomed in text looks like this after saving using ggsave ``` ``` #Information about my version of R and OS sessionInfo() R version 2.15.1 (2012-06-22) Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit) R.version _ platform x86_64-apple-darwin9.8.0 arch x86_64 os darwin9.8.0 system x86_64, darwin9.8.0 status major 2 minor 15.1 year 2012 month 06 day 22 svn rev 59600 language R version.string R version 2.15.1 (2012-06-22) nickname Roasted Marshmallows ############## #The actual code I am using looks like this: #function that creates the line equation lm_eqn = function(df){ m = lm(y ~ x, df) eq <- substitute(italic(y) == a + b %.% italic(x)*","~~italic(r)^2~"="~r2, list(a = format(coef(m)[1], digits = 2), b = format(coef(m)[2], digits = 2), r2 = format(summary(m)$r.squared, digits = 3))) as.character(as.expression(eq)) } #creates basic plot and adds a line p<-ggplot(df, aes(x,y)) p<- p + geom_point(alpha=1/10, colour="blue", size=5) #controls background colours p<-p + theme_bw() #adds the labels, titles and makes them pretty p<- p + geom_smooth(method="lm", se=FALSE, formula=y~x,colour="black") p<- p + xlab("Species similarity for site pair (Tsim variable 'a')") p<- p +ylab("Trait similarity for site pairs (Tsim)") p<- p +opts(title="Species vs. Trait combination similarity 2-5m") p<- p +opts(plot.title = theme_text(family="Times",face="bold", size=18, colour = "Black",vjust=1)) p<- p +opts(axis.title.x = theme_text(family="Times",face="bold", size=15, colour = "Black",vjust=0)) p<- p +opts(axis.title.y = theme_text(family="Times",face="bold", size=15, angle =90, colour = "Black",vjust=0.4)) #adds the equation p<- p + geom_text(aes(x = 0.015, y = 0.08, label = lm_eqn(df)),size=6, family="Times",face="italic", parse = TRUE) ggsave(p,file="tsim.a.0-2.pdf") ```