2015-01-16 3 views
2

Я строю гистограмму в R с использованием геометеограммы, хочу масштабировать ось x до 155 insted из 252, которая показывает и видеть тик evrey 5 чисел (0,5 , 10 и т. Д.), Я использовал scale_x_continuous(breaks=(0,155,5). он работал, но гистограмма не представлена ​​по всему экрану. Я использовал xlim(0,155), он показал гистограмму по всему экрану, но он переопределил тики, которые я определил.Как масштабировать ось x и добавить тики в R

ответ

3

Проблема заключается в том, что xlim(0, 155) на самом деле является сокращением для scale_x_continuous(lim = c(0, 155)). Поэтому, когда вы используете оба варианта: xlim() и scale_x_continuous(), ggplot запутался и будет использовать только один из двух вызовов scale_x_continuous(). Если я это сделаю, я получаю следующее предупреждение:

Шкала для 'x' уже присутствует. Добавление другой шкалы для «x», которая заменит существующий масштаб.

Как вы можете видеть, ggplot использует только тот масштаб, который вы определили последним.

Решение состоит в том, чтобы установить пределы и перерывы в один звонок scale_x_continuous(). Ниже приведен пример, который вы можете запустить, чтобы увидеть, как это работает:

data <- data.frame(a = rnorm(1000, mean = 100, sd = 40)) 
ggplot(data, aes(x = a)) + geom_histogram() + 
    scale_x_continuous(breaks = seq(0, 155, 5), lim = c(0, 155)) 

Позвольте мне добавить еще одно замечание: Перерывы теперь не хорошо согласуется с шириной бен, который я нахожу довольно странным. Поэтому я бы посоветовал вам также изменить ширину ячейки. Следующие участки Гистограмма снова, но устанавливает ширину бен до 5:

ggplot(data, aes(x = a)) + geom_histogram(binwidth = 5) + 
    scale_x_continuous(breaks = seq(0, 155, 5), lim = c(0, 155)) 

Следующая ссылка содержит много дополнительной информации и примеров о том, как изменить оси в ggplot: http://www.cookbook-r.com/Graphs/Axes_%28ggplot2%29/

1

break принимает список последовательности для вашего основного тика. Попробуйте:

scale_x_continuous(breaks=seq(0,155,5)) 
+0

Это устанавливает засечек как запрошено, но не устанавливает верхний предел оси x равным 155. – Stibu

+0

scale_x_continuous (breaks = seq (0,155,5), пределы = c (0,155)) –

Смежные вопросы