【问题标题】:ggplot2 label out of the graph in likert scaleggplot2标签在李克特量表中的图表之外
【发布时间】:2014-03-15 21:55:49
【问题描述】:

我有一个使用 jason.bryer (see) 的包 likert 由 likert-scale 制成的 ggplot。如果您使用原始数据运行代码 here,然后我的极值标签(在最右边)不再出现​​在图表中(见下图)。我该如何解决?

我使用的代码:

library(ggplot2)
library(likert)
library(gridExtra)
competence_bachelor <- rawdata[, substr(names(rawdata), 1, 4) == "Q002"]
competence_bachelor <- rename(competence_bachelor, c(Q002_01 = "Ability to propose new ideas and new solutions", Q002_02 = "Ability to present in public", Q002_03 = "Ability to use a computer", Q002_04 = "Ability to use the Internet", Q002_05 = "Ability to use statistical programs", Q002_06 = "Ability to write reports", Q002_07 = "Knowledge of economic concepts", Q002_08 = "Knowledge of legal concepts", Q002_09 = "Ability to understand the other's point of view", Q002_10 = "Ability to rapidly acquire new knowledge", Q002_11 = "Ability to team work", Q002_12 = "Ability to do analysis with quantitative methods", Q002_13 = "Ability to do analysis with qualitative methods", Q002_14 = "Knowledge of English", Q002_15 = "Knowledge of another foreign language"))
i <- 1
while(i<=ncol(competence_bachelor)) {
  competence_bachelor[[i]] = factor(competence_bachelor[[i]],labels = c("insignificant", "2", "3", "4", "5", "6", "7", "8", "9", "very relevant"), levels=c(1:10))
  i <- i + 1
}
competence_bachelor_plot <- likert(competence_bachelor)
p <- plot(competence_bachelor_plot, centered = FALSE, include.histogram = FALSE) + ggtitle("How do you rate your skills gained with the Bachelor's?*") + theme(axis.text.y = element_text(colour = "black"), axis.text.x = element_text(colour = "black"))
g <- arrangeGrob(p, sub = textGrob("*Order of questions was randomized and only extremes labeled in online questionaire.", x = 0, hjust = -0.1, vjust=0.1, gp = gpar(fontface = "italic", fontsize = 10)))
print(p)
ggsave((filename="competence_bachelor.pdf"), scale = 1, width = par("din")[1], height = par("din")[2], units = c("in", "cm", "mm"), dpi = 300, limitsize = TRUE, g)

【问题讨论】:

    标签: r ggplot2 label


    【解决方案1】:

    首先,虽然图例的最右侧元素没有显示,但它们确实在 pdf 中正确呈现。

    问题是图例太长了,所以被剪掉了。一种选择当然是使显示窗口更大。另一个是使图例更小。您可以通过在 p 的定义末尾添加一行来做到这一点:

    p <- plot(competence_bachelor_plot, centered = FALSE, include.histogram = FALSE) + 
      ggtitle("How do you rate your skills gained with the Bachelor's?*") + 
      theme(axis.text.y = element_text(colour = "black"), axis.text.x = element_text(colour = "black"))+
      theme(legend.key.size=unit(.01,"npc"))
    

    您也可以删除名称(“响应”),因为它是多余的并且会破坏对称性。这也允许您使图例本身更大。

    p <- plot(competence_bachelor_plot, centered = FALSE, include.histogram = FALSE) + 
      ggtitle("How do you rate your skills gained with the Bachelor's?*") + 
      theme(axis.text.y = element_text(colour = "black"), axis.text.x = element_text(colour = "black"))+
      theme(legend.key.size=unit(0.02,"npc"))+guides(fill=guide_legend(""))
    

    【讨论】:

    • 这个解决方案解决了窗口太大的问题,甚至删除了我一直想知道的冗余。谢谢!
    【解决方案2】:
    p <- plot(competence_bachelor_plot,
              centered = FALSE,
              include.histogram = FALSE) + 
      ggtitle("How do you rate your skills gained with the Bachelor's?*") + 
      theme(axis.text.y = element_text(colour = "black"), 
            axis.text.x = element_text(colour = "black"),
            plot.margin = unit(c(2, 2, 2, 2), "cm"))
    

    【讨论】:

    • 这个解决方案有帮助,但对我来说不是最佳的。还是谢谢你!
    【解决方案3】:

    您也可以将图例设置为两行,这样可以腾出足够的空间:

    guides(fill = guide_legend(nrow = 2))
    

    【讨论】:

      猜你喜欢
      • 2020-12-26
      • 1970-01-01
      • 2022-11-03
      • 2021-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-12
      • 1970-01-01
      相关资源
      最近更新 更多