Заставить начало координат начинаться с 0


139

Как я могу установить начало / перехват оси Y и оси X в ggplot2?

Линия оси X должна быть точно в y=Z.

С Z=0или другим данным значением.

Ответы:


199

xlimи ylimне режь это здесь. Вам нужно использовать expand_limits, scale_x_continuousи scale_y_continuous. Пытаться:

df <- data.frame(x = 1:5, y = 1:5)
p <- ggplot(df, aes(x, y)) + geom_point()
p <- p + expand_limits(x = 0, y = 0)
p # not what you are looking for

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

p + scale_x_continuous(expand = c(0, 0)) + scale_y_continuous(expand = c(0, 0))

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

Возможно, вам придется немного изменить положение, чтобы убедиться, что точки не обрезаются (см., Например, точку в x = 5и y = 5.


29
Мне также нужно было указать ограничения: scale_x_continuous(expand = c(0, 0), limits = c(0,5))как-то без этого это не сработало
Елена Чуклина

3
Я думаю, что еще одна часть может быть полезной, которая использует что-то вроде этого, expand=expand_scale(mult=c(0,0.1))так что вы все еще получаете заполнение на верхних концах: stackoverflow.com/a/59056123/8400969
Майкл

4

Просто добавьте их в свой ggplot:

+ scale_x_continuous(expand = c(0, 0), limits = c(0, NA)) + 
  scale_y_continuous(expand = c(0, 0), limits = c(0, NA))

пример

df <- data.frame(x = 1:5, y = 1:5)
p <- ggplot(df, aes(x, y)) + geom_point()
p <- p + expand_limits(x = 0, y = 0)
p # not what you are looking for


p + scale_x_continuous(expand = c(0, 0), limits = c(0,NA)) + 
  scale_y_continuous(expand = c(0, 0), limits = c(0, NA))

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

И, наконец, взять большую осторожность , чтобы не случайно исключить данные с вашей карты . Например, a position = 'dodge'может привести к тому, что столбец полностью покинет график (например, если его значение равно нулю, а ось начинается с нуля), поэтому вы можете его не видеть и даже не знать о его наличии. Я рекомендую сначала полностью отобразить данные, проверить, а затем использовать приведенный выше совет, чтобы улучшить эстетику графика.


также возможно ли встроить это в новую тему ggplot?
Болл

@Bolle Я не уверен, но интересно узнать также, вы могли бы задать в качестве отдельного вопроса и ссылку здесь
Stevec

Ссылка здесь для дальнейшего использования
stevec
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.