如何解决带有长组标签的李克特量表调查结果的箱线图
对于要求受访者回答的每个陈述,我的数据有 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()
,
您可以在同一步骤中使用 15
和 strwrap
'em 以及换行符 paste
以大约 \n
的宽度包裹字符串。
txt <- lapply(question4,function(x) paste(strwrap(x,width=15),collapse="\n"))
然后设置 xaxt="n"
并使用 axis
和 mtext
构建您自己的。
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
为了灵活性,我建议坚持使用基本图形。无需理会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 举报,一经查实,本站将立刻删除。