Проблема с отображением года на оси X с помощью ggplot - PullRequest
0 голосов
/ 30 апреля 2020

Я использую ggplot для показа публикаций с течением времени по годам. Тем не менее, моя ось X отображается в виде целых чисел (например, 2015.0), а не каждый год отображается под каждым столбцом.

p <-ggplot(pubs, aes(x = Year, y=Pubs, fill=Author.order)) +
        geom_bar(stat="identity", position=position_stack(reverse = TRUE),size=.3)

1 Ответ

0 голосов
/ 30 апреля 2020

Как и другой упомянутый пользователь, вам сложно помочь, не увидев ваш набор данных, pubs. С учетом вышесказанного, если вы видите свою ось, помеченную как 2015.0 для 2015 года, это определенно означает, что pubs$Year не отформатировано как дата. Таким образом, ggplot обрабатывает его как обычную цифру c.

Попробуйте сначала отформатировать как дату:

pubs$Year <- as.Date(pubs$Year, format="your.format.here")

Если бы я увидел, как был построен pubs$Year, я мог бы дать вам предложение, что использовать для format=. По умолчанию функция as.Date будет пытаться использовать различные форматы в соответствии с документацией и сообщать вам об ошибке, если по вашим данным ничего не найдено. as.Date использует strptime() для преобразования в Date класс, поэтому вы можете взглянуть на эту документацию , чтобы понять, как написать кусок format=. Обратите внимание, что strptime преобразует символы в типы дат, поэтому, если ваши данные имеют числовое значение c, вы можете преобразовать их в символы , а затем - в дату. Звучит странно, но я сделал это сам, потому что это работает. :)

Есть и другие классы, кроме Date в R для представления даты или значения даты / времени. Вы также можете использовать POSIXct или POSIXlt, используя любую из функций as.POSIX, которые работают аналогично функции as.Date . Любой из этих форматов должен нормально работать с ggplot.

Наконец, если вы хотите указать что-либо, связанное с масштабами для представления на вашем графике, вы можете использовать scale_x_date для изменения разрывов, ограничений, меток формата и др. c. См. Документацию здесь .

...