我正在使用ggplot2来改善降水条件 .
这是我想要实现的可重现的例子:
library(ggplot2)
library(gridExtra)
secu <- seq(1, 16, by=2)
melt.d <- data.frame(y=secu, x=LETTERS[1:8])
m <- ggplot(melt.d, aes(x=x, y=y)) +
geom_bar(fill="darkblue") +
labs(x="Weather stations", y="Accumulated Rainfall [mm]") +
opts(axis.text.x=theme_text(angle=-45, hjust=0, vjust=1),
title=expression("Rainfall"), plot.margin = unit(c(1.5, 1, 1, 1), "cm"),
plot.title = theme_text(size = 25, face = "bold", colour = "black", vjust = 5))
z <- arrangeGrob(m, sub = textGrob("Location", x = 0, hjust = -3.5, vjust = -33, gp = gpar(fontsize = 18, col = "gray40"))) #Or guessing x and y with just option
z
我不知道如何避免在gjplot2上的hjust和vjust上使用猜测数字?是否有更好的方法来放置字幕(不只是使用\ n,而是使用不同文本颜色和大小的字幕)?
我需要能够使用ggsave来获得pdf文件 .
以下是两个相关问题:
Add a footnote citation outside of plot area in R?
How can I add a subtitle and change the font size of ggplot plots in R?
谢谢你的帮助 .
7 回答
最新的ggplot2版本(即2.1.0.9000或更新版本)具有字幕和低于 Headers 的字幕作为内置功能 . 这意味着你可以这样做:
Ignore this answer
ggplot2
2.2.0版具有 Headers 和副 Headers 功能 . 请参阅@ hrbrmstr的回答below .您可以在
expression
中使用嵌套的atop
函数来获得不同的大小 .EDIT 更新了ggplot2 0.9.3的代码
似乎
opts
从ggplot 2 0.9.1开始被弃用,不再起作用 . 这适用于我今天的最新版本:+ ggtitle(expression(atop("Top line", atop(italic("2nd line"), ""))))
.将gbs添加到gtable并以这种方式制作一个花哨的 Headers 并不太难,
此版本使用
gtable
函数 . 它允许 Headers 中有两行文本 . 每行的文本,大小,颜色和字体可以独立设置 . 但是,该功能仅使用单个绘图面板修改绘图 .Minor edit: Updating to ggplot2 v2.0.0
你可以使用在grid.arrange中包装图并传递一个自定义的基于网格的 Headers ,
你可能已经注意到Sandy的代码没有为“Rainfall”生成一个粗体 Headers - 使这个粗体的指令应该出现在atop()函数而不是theme()函数中 .