柱状图X轴方向调整失效求助(附R语言ggplot2代码)
解决ggplot转ggplotly后X轴文本旋转失效的问题
问题原因
你的代码里存在两个导致X轴文本旋转不生效的问题:
- 主题设置顺序错误:
theme_minimal()在自定义的theme(axis.text.x = element_text(angle = 90, hjust = 1))之后调用,会重置所有主题样式,覆盖你之前设置的X轴文本角度。 - ggplotly的样式覆盖:即使在ggplot中正确设置了样式,ggplotly转换时可能会部分覆盖这些设置,需要单独针对plotly调整。
解决方案
步骤1:调整ggplot主题顺序
把 theme_minimal() 放在最前面,再添加自定义主题设置,确保自定义样式不会被覆盖:
res1PM$Source <- "Reserva 1P" res2PM$Source <- "Reserva 2P" res3PM$Source <- "Reserva 3P" reservas_totalesM <- rbind(res1PM, res2PM, res3PM) aM <- ggplot(reservas_totalesM, aes(x = CAMPO_OFICIAL, y = VOLUMEN_ORIGINAL_PETROLEO_MMB, fill = Source)) + geom_bar(stat = "identity", position = position_stack()) + labs(x = "Campos", y = "Reservas [MMbls]", fill = "Referencia") + ggtitle("Reservas totales de aceite en campos marinos") + scale_fill_brewer(palette = "Greens") + theme_minimal() + # 先调用基础主题 theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank()) + theme(axis.text.x = element_text(angle = 90, hjust = 1)) # 再添加自定义样式 aM_interactivo <- ggplotly(aM) aM_interactivo
步骤2:针对ggplotly补充设置(如果步骤1后仍失效)
如果转换为ggplotly后X轴文本还是没有旋转,使用plotly的 layout() 函数直接设置X轴的tick角度:
aM_interactivo <- ggplotly(aM) %>% layout(xaxis = list(tickangle = 90)) aM_interactivo
这样就能确保X轴文本垂直显示,并且在交互式图表中生效。
内容的提问来源于stack exchange,提问作者Miguel JV
相关产品推荐
相关产品推荐

