Til Hund
Til Hund

Reputation: 1681

ggplot2 label out of the graph in likert scale

I have a ggplot made of a likert-scale using the package likert by jason.bryer (see). If you run the code with the original data here, then my extrem label (in the far right) is not in the graph anymore (see picture below). How can I fix it?

enter image description here

The code I use:

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)

Upvotes: 2

Views: 5376

Answers (3)

lawyeR
lawyeR

Reputation: 7654

You could also make the legend two rows, which would create ample room:

guides(fill = guide_legend(nrow = 2))

Upvotes: 3

jlhoward
jlhoward

Reputation: 59345

So first of all, while the far right elements of the legend do not display, they do render properly in the pdf.

The problem is that the legend is just too long, so it gets clipped. One option of course is to just make the display window larger. Another is to make the legend smaller. You can do that by adding one line to the end of the definition of 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"))

You can also remove the name ("Response"), since it's redundant and disturbs the symmetry. This also allows you to make the legend itself larger.

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(""))

Upvotes: 5

Paulo E. Cardoso
Paulo E. Cardoso

Reputation: 5856

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

enter image description here

Upvotes: 2

Related Questions