Числа оси X имеют десятичные дроби

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

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 )

**Участок**

Всего 1 ответ


Вы можете контролировать разрывы осей (и метки) с помощью 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 чтобы округлить числа и подтолкнуть их «внутрь» на графике (если он дробный). by=2 произвольно, это зависит от ваших данных. Если вам нужно, чтобы это было динамически (различные диапазоны), тогда seq(from, to, length.out=) имеет смысл, но это может привести к дробным годам, поэтому вам нужно выполнить некоторую «математику» и логику, чтобы определить разумный вместо 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))

Есть идеи?

10000