微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

带有长组标签的李克特量表调查结果的箱线图

如何解决带有长组标签的李克特量表调查结果的箱线图

对于要求受访者回答的每个陈述,我的数据有 5 个观察值,然后是受访者 ID 的变量 1-5。

我设法使用基础 R 做一个 Boxplot,但我的标签太长(5-8 个字),我似乎无法让它与 par 函数一起工作。

q4 <- par(mar=c(8,2,1,1))
q4 <- Boxplot(np$ab_overused_nationally4,np$ab_overused_work4,np$ab_amr_problem4,np$ab_amr_problem_work4,np$ab_better_use4,ylab="Likert Scale",las=2,names=question4,main="How much do you agree with the following statements",col=(c("gold","darkgreen")))

所以我想我会尝试ggplot,因为它似乎有更多的灵活性,但我不知道如何只用一个轴来做到这一点。我还看到了一些非常整齐的堆叠条来可视化数据,但同样,我什至不知道从哪里开始。

编辑以添加 df:

# A tibble: 19 x 5
   ab_overused_nationally4 ab_overused_work4 ab_amr_problem4 ab_amr_problem_work4 ab_better_use4
                     <dbl>             <dbl>           <dbl>                <dbl>          <dbl>
 1                       4                 2               4                    4              5
 2                       4                 4               4                    3              4
 3                       5                 3               4                    2              5
 4                       3                 3               4                    2              5
 5                       5                 3               5                    4              5
 6                       5                 4               5                    5              5
 7                       4                 1               5                    2              5
 8                       5                 1               4                    2              5
 9                       4                 2               4                    3              5

解决方法

你需要这样的东西吗?

library(tidyr)
library(ggplot2)

np %>%
  pivot_longer(cols = everything()) %>%
  ggplot(aes(name,value)) + geom_boxplot()
,

您可以在同一步骤中使用 15strwrap'em 以及换行符 paste 以大约 \n 的宽度包裹字符串。

txt <- lapply(question4,function(x) paste(strwrap(x,width=15),collapse="\n"))

然后设置 xaxt="n" 并使用 axismtext 构建您自己的。

op <- par(mai=c(1.2,1,1))  ## set par and store defaults
boxplot(np,xaxt="n",main="foo",col=c(3,7))
axis(1,at=axTicks(1),labels=FALSE)  ## produces ticks
mtext(txt,4,cex=.7)  ## produces labels
par(op)  ## restore par defaults

enter image description here

为了灵活性,我建议坚持使用基本图形。无需理会ggplot2


数据:

np <- structure(list(ab_overused_nationally4 = c(4L,4L,5L,3L,4L),ab_overused_work4 = c(2L,1L,2L),ab_amr_problem4 = c(4L,ab_amr_problem_work4 = c(4L,2L,3L),ab_better_use4 = c(5L,5L
)),class = "data.frame",row.names = c("1","2","3","4","5","6","7","8","9"))

question4 <- rep("Lorem ipsum dolor sit amet,consetetur sadipscing elitr?",5)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?