将单词之间的换行符添加到 ggplot 中的轴标签

问题描述

我正在寻找一种方法来为我的 x 轴标签添加换行符,因为它们目前太长了。

enter image description here

这是我的几个图之一的代码

PortR_plot = ggplot(data=PortR,mapping = aes(x=Energy.Type,y=Scaled.score,fill=Energy.Type)) 
  + labs(title="Portfolio R",x=('Energy Type'),y=('Scaled score'))

PortR_plot + geom_Boxplot()+ scale_x_discrete(limits=c('Battery storage','Geothermal','Onshore Wind','Pumped Storage','Run of River Hydro','Small Storage Hydro','Solar')) 
  + ylim(0,1)+ theme(text = element_text(size = 20))


我知道您可以使用 scale_x_discrete 添加中断 (\n) 但我已经在使用 scale_x_discrete 来显示原始数据集 (PortR) 中没有的空能量类型,因此当我在那里添加换行符时,例如:

scale_x_discrete(limits=c('Battery \n storage',etc etc

它不起作用,因为它与数据集中的能量类型名称不匹配。

我尝试了 the method from this blog,但没有产生任何明显的变化。

任何帮助将不胜感激!

编辑:添加数据样本

structure(list(Project = c("Batt_1","Wind_2","Wind_3","Wind_4","Wind_5","Wind_6","Wind_7","Wind_8","Wind_9","Hydro_1","Hydro_2","Hydro_3"),Energy.Type = c("Battery storage","Onshore Wind","Small Storage Hydro","Small Storage Hydro"
),Scaled..T.FW. = c(0,1.29,1.19,0.69,1.14,0.11,0.9,0.52,1.02,0.85,0.83,0.31)),row.names = c(NA,-12L),class = "data.frame")

Edit2:我想我可能在导入到 R 之前通过在 excel 中添加中断(alt+enter)来强制解决方案。仍然有兴趣了解 R 中的解决方案。

Edit3:我尝试做 Ronak 展示的内容,但是当我尝试通过 scale_x_discrete(limits) 在 x 轴上添加其他能量类型时,我得到了一个空白图。

解决方法

您可以使用 stringr::str_wrap 来包装 x 轴文本。您可以根据自己的选择更改 widthstr_wrap 参数。

library(ggplot2)

ggplot(df,aes(x = stringr::str_wrap(Energy.Type,10),y=Scaled..T.FW.,fill=Energy.Type)) +
  geom_boxplot() + 
 labs(title="All Projects",x= 'Energy Type',y= 'Scaled Score')

enter image description here

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...