Заставить начало координат начинаться с 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.

A5C1D2H2I1M1N2O1R2T1
источник
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'может привести к тому, что столбец полностью покинет график (например, если его значение равно нулю, а ось начинается с нуля), поэтому вы можете его не видеть и даже не знать о его наличии. Я рекомендую сначала полностью отобразить данные, проверить, а затем использовать приведенный выше совет, чтобы улучшить эстетику графика.

stevec
источник
также возможно ли встроить это в новую тему ggplot?
Болл
@Bolle Я не уверен, но интересно узнать также, вы могли бы задать в качестве отдельного вопроса и ссылку здесь
Stevec
Ссылка здесь для дальнейшего использования
stevec