How to change the legend of my barplot in R?

In this barplot, a legend blocks part of it. How to reduce the size of the legend?

My code: `work.gender.marriage.table = table(work$marriage,work$gender)` 

enter image description here

 `barplot(work.gender.marriage.table,main = "Gender & Marriage", beside = TRUE, legend = rownames(work.gender.marriage.table))` 

My details:

 `structure(list(marriage = structure(c(1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L), class = "factor", .Label = c("D", "M", "NM", "W")), gender = structure(c(2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L), .Label = c("F", "M"), class = "factor"), val = c(12L, 61L, 78L, 56L, 71L, 33L, 86L, 93L)), .Names = c("marriage", "gender", "val"), row.names = c(NA, -8L), class = "data.frame")` 

This image is after using the code:

  barplot(work.gender.marriage.table,main = "Gender & Marriage", beside = TRUE) legend("topright", legend = rownames(work.gender.marriage.table), ncol = 2, cex = 0.5) 

Picture: enter image description here

+5
source share
2 answers

Try the following:

 barplot(work.gender.marriage.table,main = "Gender & Marriage", beside = TRUE) 

Then add your legend as:

 legend("topright", legend = rownames(work.gender.marriage.table), ncol = 2, cex = 0.5) 

Based on your data:

 df = structure(list(marriage = structure(c(1L, 2L, 3L, 4L, 1L, 2L, 3L, 4L), class = "factor", .Label = c("D", "M", "NM", "W")), gender = structure(c(2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L), .Label = c("F", "M"), class = "factor"), val = c(12L, 61L, 78L, 56L, 71L, 33L, 86L, 93L)), .Names = c("marriage", "gender", "val"), row.names = c(NA, -8L), class = "data.frame") df dfM <- df[which(df$gender=="M"),] dfF <- df[which(df$gender=="F"),] dfN <- cbind(dfM[,3], dfF[,3]) colnames(dfN) <- c("M", "F") rownames(dfN) <- dfM$marriage dfN barplot(dfN, beside=T, legend.text = rownames(dfN), args.legend = list(x = "topleft", bty="n", cex = 0.7, ncol = 2)) 

enter image description here

+4
source

You can also use ggplot2.

 library(ggplot2) ggplot(work.gender.marriage.table) + geom_bar(aes(y = val, x = cat), stat="identity") + facet_grid(. ~ sex) 

Example data.frame:

 work.gender.marriage.table <- data.frame(cat = c("D", "M", "NM", "W", "D", "M", "NM", "W"), sex = rep(c("M","F"), each = 4), val = sample(1:100,8)) 

enter image description here

+1
source

Source: https://habr.com/ru/post/1269422/


All Articles