2015-12-04 4 views
0

Я новичок в ggplot (aka ggplot2) и заметил, что по какой-то причине он всегда делает мои ящики настолько большими, что одна коробка доминирует над всем сюжетом. Участок ниже был создан из набора данных ToothGrowth, используя следующий код:R - ggplot2 - boxplots слишком большие

bp = ggplot(ToothGrowth, aes(x=dose, y=len, color = dose)) + geom_boxplot() + theme(legend.position = "none") 
bp 

Huge Boxplot

В случае, если вы не получили набор данных ToothGrowth по какой-то причине (его в библиотеке «наборы данных»), то переменные len и доза являются числовыми. len имеет три дискретных значения, (0,5, 1,0, 2,0), в то время как Доза непрерывна от приблизительно 4-30. Я ожидаю, что мой boxplot покажет три разных блока для трех конфиденциальных значений: len

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

+1

В 'width' параметр управляет шириной коробки по сравнению с остальной частью сюжета. 'ggplot (ToothGrowth, aes (x = доза, y = len, group = dose)) + geom_boxplot (width = 0.2)'. – eipi10

+0

Этот «цвет = доза» заставляет меня предположить, что вы пытаетесь построить 3 ящика ** дозы ** (не len) ... это тот случай? –

+0

Или для отдельного ящика (в данном случае не сгруппированного по дозе): 'ggplot (ToothGrowth, aes (x =" ", y = len)) + geom_boxplot (width = 0.5) + labs (x =" ")' – eipi10

ответ

3

Я предполагаю, что вы хотите построить для каждого «уровня» дозы один ящик. Это можно было бы преобразовать в коэффициент x по вызову ggplot2.

Вот как:

bp = ggplot(ToothGrowth, aes(x=factor(dose), y=len, color = dose)) + geom_boxplot() + theme(legend.position = "none") 
bp 

А вот сюжет

enter image description here


Другим вариантом является использование группы эстетика, которая позволяет держать ось й на вашем (вместо того, чтобы предполагать разницу в 1 единицу между каждым уровнем, если вы используете factor()). В этом случае они довольно похожи, но могут быть важны для других целей.

bp = ggplot(ToothGrowth, aes(x=dose, y=len, color = dose, group = dose)) + geom_boxplot() + theme(legend.position = "none") 
bp 

enter image description here

+2

Вы также можете использовать групповую эстетику, т.е. «aes (x = доза, y = len, color = dose, group = dose)». Это будет поддерживать разные расстояния между 0,5 и 1, против 1 и 2, если это важно для вашего граф. – GregF

+0

@GregF Это правда! не стесняйтесь редактировать мой ответ –

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