Тиковые значения Boxplot для оси Y в R? - PullRequest
1 голос
/ 30 июня 2019

Я пытаюсь создать блок-график в R, однако обнаружил, что на рисунке указаны неправильные значения тиков для оси Y.

.rdata доступна в https://www.dropbox.com/s/vbgf3mhgd2mjx8o/Mydata2.rdata?dl=0

load("Mydata2.rdata",.GlobalEnv)
boxplot(Value~Type+Level, data=Mydata2)

Как показано на рисунке, ось Y помечена как «0, 50, 100», однако мой диапазон данных составляет от -36,9 до 133,7.Интересно, как это исправить?enter image description here

Ответы [ 2 ]

5 голосов
/ 30 июня 2019

Здесь я использовал min, mean и max для отметок.Вы можете установить для них любое значение вручную или даже иметь более 3 отметок.yaxt="n" предотвращает использование отметок по умолчанию, а затем, используя axis и устанавливая сторону на 2 (axis(2,...), я добавляю желаемые отметки.Читайте о ?axis в R.

boxplot(Value~Type+Level, yaxt="n", data=Mydata2)
axis(2, 
     at=round(c(min(Mydata2$Value), mean(Mydata2$Value), max(Mydata2$Value)),1),
     labels = T)

Последующий вопрос: Как вычисляются отметки по умолчанию?

"Когда at = NULL, места для красивых отметок вычисляются внутренне (аналогично axTicks(side))."

Итак, ваш код работает.Тиковые отметки по умолчанию выбираются boxplot, поэтому это красивее (ну, в общем, субъективно).

3 голосов
/ 30 июня 2019

Два метода:

  1. Установка каждой метки отдельно с помощью аргумента axis at (at - числовой вектор, определяющий каждую метку):
boxplot(Value~Type+Level, yaxt="n", data=Mydata2)
tickmarks = c(min(Mydata2$Value), max(Mydata2$Value))
axis(2, at = round(tickmarks,1))
Определите диапазон для своих отметок с помощью аргумента boxplot s ylim.Итак, чтобы установить диапазон для ваших отметок от -40 до 140:
boxplot(Value~Type+Level, data=Mydata2, ylim=c(-40,140))

Метод №2 работает иногда, но не всегда.Метод № 1 является более надежным и настраиваемым, и поэтому его следует использовать чаще.

...