我在R中绘制了一个带ggplot2的图,我希望y轴的标题出现在图的左上角.请考虑以下代码以获取默认行为:
require(ggplot2)
xy = data.frame(x=1:10, y=10:1)
ggplot(data = xy) +
geom_point(aes(x = x, y = y)) +
ylab("very long label")
Run Code Online (Sandbox Code Playgroud)
这将生成以下图表:

我想移动并旋转文本"非常长的标签".我可以使用theme()函数做一些事情:
ggplot(data = xy) +
geom_point(aes(x = x, y = y)) +
ylab("very long label") +
theme(axis.title.y = element_text(angle = 0, vjust = 1.1, hjust = 10))
Run Code Online (Sandbox Code Playgroud)
这给了我这个:

您可以看到我的目的地,但边距不正确 - 左边距太大,因为空间是为旋转标签保留的,而上边距对于文本而言太小.
我怎么能告诉ggplot我想在那个位置没有旋转的y轴标题,并为它保留适当的空间?
把它放在主要情节标题中:
ggplot(data = xy) +
geom_point(aes(x = x, y = y)) +
ggtitle("very long label") +
theme(plot.title = element_text(hjust = 0))
Run Code Online (Sandbox Code Playgroud)
如果你喜欢使用负值hjust,你可以稍微向左推它,但如果你走得太远,标签将被剪裁.在这种情况下,您可以尝试使用plot.margin:
ggplot(data = xy) +
geom_point(aes(x = x, y = y)) +
ggtitle("very long label") +
theme(plot.title = element_text(hjust = -0.3),
plot.margin = rep(grid::unit(0.75,"in"),4))
Run Code Online (Sandbox Code Playgroud)
很明显,这使得向图表添加实际标题变得很困难.您始终可以使用以下内容手动注释:
grid.text("Actual Title",y = unit(0.95,"npc"))
Run Code Online (Sandbox Code Playgroud)
或者,反之亦然,grid.text用于y标签.
| 归档时间: |
|
| 查看次数: |
3178 次 |
| 最近记录: |