5

我正在使用jbryer 的 likert,并希望用堆积条形图可视化数据。这些条形图的大小/宽度取决于图表中有多少条形,即只有一个条形时条形相当宽,而绘制的条形越多越细。

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

带有两个条形的李克特条形图

带有五个条形的李克特条形图

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)
4

1 回答 1

4

该函数likert.bar.plot(..)没有任何有关箱宽度的参数。但是,它返回一个类对象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

具有预定义 bin 宽度的李克特图

于 2020-03-30T14:39:49.337 回答