李克特包R

时间:2016-07-22 19:27:21

标签: r ggplot2

可以使用添加ggplot" theme"更改R中的Likert包来更改绘图中的字体大小。命令。但是,当条形图和直方图同时绘制在一起时,这些更改不会影响生成的图形。有没有办法修改字体大小,同时仍然绘制条形图和直方图?例如,以下代码将成功修改轴文本:

likert.bar.plot(items, legend.position = "none") +
theme(text = element_text(size = rel(6), colour = "red"),
       axis.text.y = element_text(colour = "blue",
                                  family = "Courier"))`

...但以下代码不会:

plot(items, include.histogram=T, legend.position = "none") +
theme(text = element_text(size = rel(6), colour = "red"),
       axis.text.y = element_text(colour = "blue",
                                  family = "Courier"))`

这个问题解释了基础知识 How do I change the text font, size and colour of all the different texts in the R package, Likert?

1 个答案:

答案 0 :(得分:1)

问题是plot.likert正在使用grid pacakge来合并这些情节。这意味着它没有返回任何可以修改的对象(自己尝试,保存输出 - 它返回NULL)。但是,当只打印一个绘图时,它会返回带有ggplot类(以及其他类)的绘图,允许theme和其他ggplot函数对其进行操作。

如果您希望在单个函数调用中使用它,则可能需要自己编辑plot.likert的代码。或者,可能更强大/更灵活:您可能希望自己查看grid包以合并这些图。

E.g,:

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



a <- 
  likert.bar.plot(l29, legend.position = "none") +
  theme(text = element_text(size = rel(6), colour = "red"),
        axis.text.y = element_text(colour = "blue",
                                   family = "Courier"))

b <-
  likert.histogram.plot(l29, legend.position = "none") +
  theme(text = element_text(size = rel(6), colour = "red"),
        axis.text.y = element_text(colour = "blue",
                                   family = "Courier")) +
  theme(axis.text.y = element_blank())


library(gridExtra)
grid.arrange(a,b,widths=c(2,1))

(注意包含MWE以便其他人也可以运行代码。)

(感谢@ eipi10将更清洁的代码组合起来)

enter image description here