如何在ggplot2中旋转轴标签?

13

我使用ggplot2生成了以下图形enter image description here

我将ggplot对象命名为finalPlot。要添加标签,我使用了

finalPlot + stat_bin() + scale_x_continuous('Solution Cost') + scale_y_continuous('Number of Solutions')`

如何更改y轴标签的方向,使其水平显示,并且如果可能的话跨越两行,类似于

Number of
Solutions

3
据我所见,下面的答案已经过时,因为 'opts' 已被弃用(现在是 'theme'),而 theme_text() 也被弃用(改为使用 'element_text')。 - geotheory
2个回答

22

近期版本的ggplot2语法已经发生了变化;如果您尝试上述答案,您将会得到以下错误提示:

错误:请使用“theme”代替。“(Defunct; last used in version 0.9.1)”

现在,您应该使用

finalPlot + ylab("Number of\nSolutions") + theme(axis.title.y = element_text(angle=0))

9

对于轴文本的旋转角度,您需要使用element_text()。请参见此SO帖子以获取一些示例。要在两行之间进行间距,可以在字符串中添加"\n"以放置换行符。

这将设置y轴文本的正确方向并强制换行:

finalPlot + ylab("Number of\nSolutions") + 
    theme(axis.title.y = element_text(angle = 0))

1
不,这不是我想要的。这个会改变刻度的方向。我想要旋转坐标轴标签,而不是坐标轴刻度标签。 - Ankit
你可能可以轻松地采用这个解决方案并根据自己的情况进行调整。 - Paul Hiemstra
但是我不知道对应的参数会是什么 :( - Ankit
1
只需在命令提示符上键入 theme_text() 即可获取可以设置的选项列表。我猜你需要的是 title.text - Paul Hiemstra
4
axis.title.theme.y 是用于轴标签的设置 axis.text.theme.y 是用于轴数值的设置 - Richard Williams

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接