r - 自定义李克特图中条形图的宽度

标签 r ggplot2 plot likert

我正在使用 likert package通过 jbryer 并希望使用堆积条形图来可视化数据。
这些条形图的大小/宽度取决于图中的条形数量,即只有一个条形的条形非常宽,而绘制的条形越多,它们变得越细。

我想自定义设置条的大小/宽度,以便它们保持不变,无论图中绘制了多少条,即 l29_5 和 l29_2 的图的条大小相同。

Likert bar plot with two bars

Likert bar plot with five bars

library(ggplot)
library(likert)    
data(pisaitems)

items29_5 <- pisaitems[,substr(names(pisaitems), 1,5) == 'ST25Q']
colnames(items29_5) <- c("Magazines", "Comic books", "Fiction", 
                    "Non-fiction books", "Newspapers")

items29_2 <-  items29_5 %>% 
  select("Magazines", "Comic books")


l29_5 <- likert(items29_5)
l29_2 <- likert(items29_2)

plot(l29_5)
plot(l29_2)

最佳答案

函数likert.bar.plot(..)没有任何关于 bin 宽度的参数。然而,它返回一个类 ggplot 的对象。 ,以便它可以使用标准的 ggplot2 指令进行处理。
最终图由几个 ggplot 层组成。这里的问题不是向绘图添加新指令或层,而是更新一个或多个内部层的参数。即,我们需要设置 width对于所有包含 geom_bar() 的层.为此,我们首先找到相关层:

p <- likert.bar.plot(l29_2)
p$layers

从输出中可以看出geom_bar包含在第 2 层和第 3 层中。然后我们可以通过添加 width 来修改它们。范围:
p$layers[[2]]$geom_params$width = 0.3
p$layers[[3]]$geom_params$width = 0.3
p

likert plot with predefied bin widths

关于r - 自定义李克特图中条形图的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60231718/

相关文章:

在 LaTeX 文档中使用 tikzDevice 和 knit 进行 R 绘图

java - 在 Java 中绘制数据并使用余弦进行最小二乘回归

r - 如何在R中的某些特定区域填充颜色?

r - 在 R 中对齐网格线,bReeze 包

马尔可夫链的R仿真

r - ggplot2 geom_bar position = "dodge"不闪避

r - 在 R 中列出没有子文件夹的文件夹中的所有文件

r - 将颜色分配给堆积面积图ggplot中的类别

r - 如何从R中的命名数值向量中检索简单数值?

r - ggpubr 找不到 'mean_se' 除非 ggpubr 是通过 library() 附加的