расстояние до текста легенды ggplot - PullRequest
0 голосов
/ 23 февраля 2019

Я пытаюсь увеличить расстояние между блоком легенды (индикатором) и текстом легенды.У меня есть код, адаптированный с этой удивительной страницы .Вот мой MWE:

library(openxlsx)           # for reading in Excel data
library(dplyr)          # for data manipulation
library(tidyr)          # for data manipulation
library(magrittr)       # for easier syntax in one or two areas
library(gridExtra)      # for generating some comparison plots
library(ggplot2)        # for generating the visualizations

mwedata <- data.frame(Metro=c(rep("Dayton,OH",6)))
mwedata$class <- as.character(c("Lower","Middle","Upper","Lower","Middle","Upper"))
mwedata$year <- as.numeric(c(rep(2000,3),rep(2014,3)))
mwedata$value <- as.numeric(c(0.221,0.580,0.199,0.269,0.527,0.204))
mwedata <- mwedata %>%
  mutate(y_label = paste0(round(value*100, 1), "%")) 


plot <- ggplot(mwedata, aes(x = class, y = value, fill = factor(year))) +
  geom_bar(stat = "identity", position = "dodge") +
  scale_fill_manual(values = c("#29ABE2", "#217693")) +
  geom_text(aes(label = y_label), position = position_dodge(0.9),
            vjust = 1.5, color = "white", family = "Georgia")

plot <- plot +
  scale_y_continuous(labels = scales::percent) +
  scale_x_discrete(labels = c("Lower" = "Lower Class",
                              "Middle" = "Middle Class", "Upper" = "Upper Class")) +
  labs(title = "Distribution of Adults by Income in Dayton, OH",
       subtitle = "The percentage of adults in the middle class eroded by 5.3% from 2000 to 2014. Although a small \nfraction of these individuals moved into the upper class (+0.5%), the majority of these middle class \nindividuals moved into the lower income class (+4.8%).",
       caption = "Source: Pew Research Center analysis of the \n2000 decennial census and 2014 American \nCommunity Survey (IPUMS)")

plot +
  theme_minimal() +
  theme(axis.title = element_blank(),
        panel.grid.major.x = element_blank(),
        panel.grid.minor = element_blank(),
        legend.position = c(1,1), legend.justification = c(1,1),
        legend.background = element_blank(),
        legend.direction="vertical",
        text = element_text(family = "Georgia"),
        plot.title = element_text(size = 18, margin = margin(b = 10)),
        plot.subtitle = element_text(size = 10, color = "darkslategrey", margin = margin(b = 25)),
        plot.caption = element_text(size = 8, margin = margin(t = 10), color = "grey70", hjust = 0),
        legend.title = element_blank(),
        legend.text.align = 2)

Последняя строка кода legend.text.align должна перемещать текст из цветных рамок легенды, но, похоже, это применимо только к нижней из двух.Смотрите изображение ниже.Кто-нибудь может мне помочь?

РЕДАКТИРОВАТЬ 1:

Я полностью забыл включить определенный data.frame.Я сейчас обновил MWE, так что это действительно МЫ с этой строкой кода

mwedata <- data.frame(Metro=c(rep("Dayton,OH",6)))

Извините за путаницу ..

Final chart with adjusted legend text

1 Ответ

0 голосов
/ 23 февраля 2019

Это помогает решить проблему:

  1. Удалить legend.title = element_blank() и legend.text.align = 2 из theme()
  2. Добавить fill = "" в labs()

Любопытное наблюдение при отладке: используя свой оригинальный код, просто изменяя семейство шрифтов, например, с «Georgia» на «Open Sans», устраняет несоответствие в выравнивании между двумя метками в легенде.


...