如何使用ggplot2旋转和居中Y轴标题?

3

我试图将ggplot2图表的y轴标题旋转并居中在y轴上。我已经成功地旋转了标题,但是即使我使用hjust = 0.5命令,似乎无法将其居中于y轴上。有没有办法在将标题旋转后将其居中于y轴上?

dataset <- data.frame(cultivar = c('var1',
                                   'var1',
                                   'var1',
                                   'var1',
                                   'var3',
                                   'var3',
                                   'var3',
                                   'var3',
                                   'var2',
                                   'var2',
                                   'var2',
                                   'var2',
                                   'var3',
                                   'var3',
                                   'var1',
                                   'var2',
                                   'var2',
                                   'var2',
                                   'var1',
                                   'var2',
                                   'var3',
                                   'var3',
                                   'var1',
                                   'var1',
                                   'var1',
                                   'var3',
                                   'var3',
                                   'var1',
                                   'var2',
                                   'var2',
                                   'var2',
                                   'var2',
                                   'var3',
                                   'var1',
                                   'var3',
                                   'var1'),
                      rate = c(10,
                               20,
                               30,
                               40,
                               10,
                               20,
                               30,
                               40,
                               10,
                               20,
                               30,
                               40,
                               20,
                               40,
                               10,
                               10,
                               30,
                               20,
                               30,
                               40,
                               10,
                               30,
                               40,
                               20,
                               20,
                               10,
                               30,
                               30,
                               40,
                               10,
                               30,
                               20,
                               40,
                               10,
                               20,
                               40),
                      vi = c(1354,
                             1307,
                             1529,
                             1380,
                             1416,
                             1342,
                             1419,
                             1363,
                             1282,
                             1287,
                             1202,
                             1312,
                             1294,
                             1248,
                             1431,
                             1421,
                             1287,
                             1439,
                             1405,
                             1406,
                             1395,
                             1540,
                             1222,
                             1247,
                             1375,
                             1235,
                             1436,
                             1335,
                             1478,
                             1356,
                             1542,
                             1219,
                             1392,
                             1406,
                             1524,
                             1342))

生成图表的代码:
#Aggregate data frame
datasetMean <- aggregate.data.frame(dataset, by=list(dataset$cultivar, dataset$rate), mean)
datasetMean <- select(datasetMean, Group.1, Group.2, vi)
colnames(datasetMean) <- c("cultivar","rate","vi")

#Generate graph
ggplot(datasetMean, aes(x = cultivar, y = vi, fill=factor(rate)))+
  geom_bar(stat="identity", width = 0.6, position = "dodge", col = "black")+
  scale_fill_discrete(name = "Rate", labels = c("0X","1X","4X","8X"))+
  xlab("Cultivar") + ylab("vi")+
  ggtitle("VI Scores")+
  theme(plot.title = element_text(hjust = 0.5, size = 30),
        strip.text.x = element_text(size = 25),
        axis.text = element_text(size = 20),
        axis.title = element_text(size = 25),
        legend.key.size = unit(1.5, "cm"),
        legend.text = element_text(size = 15),
        legend.title = element_text(size = 20),
        axis.title.y = element_text(angle = 0, hjust = 0.5))

1
在您的 axis.title.y 规范中尝试使用 vjust = .5。(vjust 用于垂直对齐,hjust 用于水平对齐。) - ravic_
1个回答

7
如果你想垂直移动坐标轴标题,需要使用 vjust 而不是 hjust,因为它是相对于图形面板的垂直方向。在你的主题(theme)调用中添加 `axis.title.y = element_text(angle = 0, vjust = 0.5)` 应该可以实现。

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