Reputation: 1681
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?
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
Reputation: 7654
You could also make the legend two rows, which would create ample room:
guides(fill = guide_legend(nrow = 2))
Upvotes: 3
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
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"))
Upvotes: 2