10

我有一个带有沿 x 轴的文本标签的条形图。有些标签很长,我想让它们看起来更整洁。关于我如何实现这一目标的任何想法?

library(sjPlot)
require(ggplot2)
require(ggthemes)
WAM_3_plot <- sjp.frq(WAM_Dec13_R2$WAM_3, title= c("WAM Item 3"),
    axisLabels.x=c("Disruptive behaviour can be contained and does not spread to other patients.  Generally, behaviour on the ward is positive and pro-therapeutic.", 
                   "1", "2","3","4",
                   "Disruptive behaviour by one patient tends to spread to other patients and is only contained with great difficulty. The general level of behaviour seems to be getting more counter-therapeutic."),
    barColor = c("palegreen4", "palegreen3", "palegreen2", "brown1", "brown2", "brown3"),
    upperYlim = 25,
    valueLabelSize = 5,
    axisLabelSize = 1.2,
    breakLabelsAt=14, returnPlot=TRUE) 
WAM_3_plot + theme(axis.text.x=element_text(hjust=0.5))
4

3 回答 3

12

像这样?

由于您没有提供任何数据,我们无法知道您的尝试是什么样的,但这似乎很接近。主要功能是使用strwrap(...)将 CR ( \n) 插入标签中。

set.seed(1)
library(ggplot2)
axisLabels.x <- c("Disruptive behaviour can be contained and does not spread to other patients.  Generally, behaviour on the ward is positive and pro-therapeutic.", 
               "1", "2","3","4",
               "Disruptive behaviour by one patient tends to spread to other patients and is only contained with great difficulty. The general level of behaviour seems to be getting more counter-therapeutic.")
labels.wrap  <- lapply(strwrap(axisLabels.x,50,simplify=F),paste,collapse="\n") # word wrap
gg <- data.frame(x=LETTERS[1:6], y=sample(1:10,6))
ggplot(gg) +
  geom_bar(aes(x,y, fill=x), stat="identity")+
  scale_x_discrete(labels=labels.wrap)+
  scale_fill_discrete(guide="none")+
  labs(x="",y="Response")+
  coord_flip()
于 2014-01-31T15:48:23.380 回答
1

旋转轴标签有很大帮助:

theme(axis.text.x  = element_text(angle=90, vjust=0.5))
于 2014-01-31T12:27:38.447 回答
1

您可以更改breakLabelsAt参数,减小axisLabelSize并设置flipCoordinates为 TRUE,然后您会得到类似的结果。我使用了 sjPlot-package 中包含的 efc-sample 数据集:

data(efc)
sjp.frq(efc$e42dep, title=c("WAM Item 3"),
    axisLabels.x=c("Disruptive behaviour can be contained and does not spread to other patients.  Generally, behaviour on the ward is positive and pro-therapeutic.", 
      "1", "2",
      "Disruptive behaviour by one patient tends to spread to other patients and is only contained with great difficulty. The general level of behaviour seems to be getting more counter-therapeutic."),
    valueLabelSize=5,
    axisLabelSize=.8,
    breakLabelsAt=50,
    flipCoordinates=T)

在此处输入图像描述

于 2014-04-10T12:55:49.170 回答