Числа оси X имеют десятичные дроби - PullRequest
1 голос
/ 25 марта 2020

У меня есть простой график с годом на оси х и населением на оси у. Почему год заканчивается десятичной дробью? Я не уверен, как это отформатировать. Это цифра c во фрейме данных.

dput(head(that[,c("year","pop")]))

structure(list(year = c(2010, 2011, 2012, 2013, 2014, 2015), 
pop = c(9574323, 9657592, 9749476, 9843336, 9932887, 10031646
)), row.names = c("1", "2", "3", "4", "5", "6"), class = "data.frame")

ggplot(that, aes(year, pop)) +
  geom_point() +
  geom_smooth(method = "lm", se = FALSE )

**Plot**

1 Ответ

1 голос
/ 25 марта 2020

Вы можете контролировать разрывы осей (и метки) с помощью scale_x_continuous. Попробуйте это:

ggplot(that, aes(year, pop)) +
  geom_point() +
  geom_smooth(method = "lm", se = FALSE) +
  scale_x_continuous(breaks = seq(ceiling(min(that$year)), floor(max(that$year)), by = 2))

Я использую ceiling и floor, чтобы округлить числа и вывести их sh "внутрь" на графике (если дробно). by=2 произвольно, это зависит от ваших данных. Если вам нужно, чтобы это было Dynami c (различные диапазоны), то seq(from, to, length.out=) имеет смысл, но это может привести к дробным годам, поэтому вам нужно выполнить некоторые "математические операции" и логику c, чтобы определить разумный by= вместо этого, например

diff(range(that$year))
# [1] 5
diff(range(that$year)) / 4
# [1] 1.25

yearby <- round(diff(range(that$year)) / 4) # assuming you want "4"-ish ticks, more or less
ggplot(that, aes(year, pop)) +
  geom_point() +
  geom_smooth(method = "lm", se = FALSE) +
  scale_x_continuous(breaks = seq(ceiling(min(that$year)), floor(max(that$year)), by = yearby))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...