R 将y轴标题放在图表的左上角
我正在用R中的ggplot2绘制一个绘图,我希望y轴的标题显示在绘图的左上角。考虑默认行为的以下代码:R 将y轴标题放在图表的左上角,r,ggplot2,R,Ggplot2,我正在用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") 这将生成以下图表: 我想移动和旋转文本“甚长标签”。我可以使用theme()函数来实现这一点: ggplot(data = xy)
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")
这将生成以下图表:
我想移动和旋转文本“甚长标签”。我可以使用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))
这就给了我:
你可以看到我要说的内容,但是边距是不正确的——左边距太大,因为空间是为旋转标签保留的,而上边距对于文本来说太小
如何告诉ggplot我希望y轴标题位于该位置而不旋转,并使其保留适当的空间?将其放在主绘图标题中:
ggplot(data = xy) +
geom_point(aes(x = x, y = y)) +
ggtitle("very long label") +
theme(plot.title = element_text(hjust = 0))
如果您喜欢使用负数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))
很明显,这使得在图表中添加一个实际的标题变得很困难。您始终可以使用以下方式手动注释:
grid.text("Actual Title",y = unit(0.95,"npc"))
或者,反之亦然,对y标签使用
grid.text
。我刚刚遇到了同样的问题,并找到了一个对社区有用的解决方案
其想法是创建一个自定义主题,用字幕替代轴标签。用作示例的绘图如下所示:
p