ggplot2 Создайте горизонтальные прямоугольники как другой график. - PullRequest
2 голосов
/ 16 июня 2020

Моя цель - воссоздать этот график: ссылка

Я знаю, как построить флаг и страну с помощью geom_text, но я не уверен насчет прямоугольника с текстом посередине ( geom_rect ()?). Это df, который я создал, но я понятия не имею, как построить график.

df <- tibble(
  country = c('Argentina', 'Uruguay', 'Chile', 'Bolivia', 'Paraguay', 'Ecuador'),
  start = c(1976, 1973, 1973, 1971, 1954, 1972),
  end = c(1983, 1984, 1990, 1978, 1989, 1976),
  dictator = c('Juntas militares', 'Juntas militares', 'Pinochet', 'Hugo Banzer', 'Alfredo Stroessner', 'Guillermo Rodríguez Lara')
)

кстати, это мой первый вопрос, поэтому любые советы о том, как улучшить, будут оценены

1 Ответ

0 голосов
/ 16 июня 2020

Добро пожаловать в stackOverflow. Спасибо за воспроизводимый пример ваших данных.

Попробуйте геометрию geom_segment.

library(ggplot2)

# Data
df <- tibble(
    country = c('Argentina', 'Uruguay', 'Chile', 'Bolivia', 'Paraguay', 'Ecuador'),
    start = c(1976, 1973, 1973, 1971, 1954, 1972),
    end = c(1983, 1984, 1990, 1978, 1989, 1976),
    dictator = c('Juntas militares', 'Juntas militares', 'Pinochet', 'Hugo Banzer', 'Alfredo Stroessner', 'Guillermo Rodríguez Lara')
)

    ggplot(data = df) +
    geom_segment(
        mapping = aes(x = start, xend = end, y = country, yend = country),
        size = 10,
        alpha = 0.5,
        color = "midnightblue"
    ) + 
    geom_text(aes(x = (start + end)/2, y = country, label = dictator)) +
    theme_minimal()

enter image description here

...