Как изменить метки оси X объекта, основанного на времени - PullRequest
0 голосов
/ 09 июля 2020

У меня есть визуализация, которая содержит гистограмму и линейную диаграмму с двумя разными масштабами. Ось X - это объект, основанный на времени.

участок

Данные, на основе которых строится график:

   count_coi  rel     year

1:  55        12.06  2000-01-01
2:  39         6.82  2005-01-01
3:  94         8.22  2010-01-01
4: 128         6.31  2015-01-01

Count-Coi представлен столбчатыми диаграммами, а rel - линейными диаграммами. В настоящее время показаны годы, но на самом деле годы представляют собой периоды времени, подобные этому "2000-2004". Итак, в основном мне нужно изменить метки оси x с лет на периоды без потери объекта, основанного на времени. Вместо 2000 он должен показать:

2000-2004

Но, если я изменю данные, я потеряю свой линейный график, потому что ему нужен объект, основанный на времени.

Вот мой код ggplot:

  ggplot(data, aes(x=year)) +
geom_bar(aes(y=count_coi), stat="identity", size=.2, fill=bar_col, color="black", alpha=.7) + 
geom_line(aes(y=rel * coeff), size=1, color=line_col) +
scale_y_continuous(
  # Features of the first axis
  name = "",
  # Add a second axis and specify its features
  sec.axis = sec_axis(~./coeff, name="")) +   
xlab(label = "") +
theme_minimal() +
theme(
  axis.title.y = element_text(color = bar_col, size=13),
  axis.title.y.right = element_text(color = line_col, size=13)
)

Итак, как мне переопределить метки? Помощь будет признательна ...

1 Ответ

0 голосов
/ 22 июля 2020

Используйте scale_x_date() и аргумент labels=, чтобы изменить метку оси:

# just in case data$year is not formatted as a Date...
data$year <- as.Date(data$year, format='%Y-%m-%d')

# your original plot code here... +

scale_x_date(
  breaks=data$year,
  labels = c('2000-2004', '2005-2009','2010-2014','2015-2019'))

введите описание изображения здесь

Вы заметите, что я также определяю breaks= в дополнение к labels=, поскольку это необходимо, чтобы при указании меток вам также нужно было указать используемые разрывы (и два должны быть одинаковой длины). В этом случае никакие значения data$year не дублируются и находятся в порядке в вашем наборе данных, поэтому полезно определить breaks=data$year.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...