2012-06-26 3 views
2

Я черчение присуща рефлективным, вербальные из этих данных:Как добавить вертикальные линии ggplot присущи рефлективным, вербальный R

MY_LABEL  MY_REAL  MY_CATEGORY 
1 [POS]  .56   POS 
1 [POS]  .57   POS 
1 [POS]  .37   POS 
2 [POS]  .51   POS 
1 [sim v]  .65   sim v 
... 

Я использую ggplot2:

ggplot(data=myDF, aes(x=MY_LABEL, y=MY_REAL, fill=MY_CATEGORY)) + 
    scale_colour_manual(values=palette) + 
    coord_flip() + 
    geom_boxplot(outlier.size = 0) 

Это прекрасно работает, и группы присуща рефлективные, вербальные по поле MY_CATEGORY: enter image description here

Я хотел бы сделать 2 вещи:

1) Чтобы улучшить ясность этого графика, я хотел бы добавить разделители между различными блоками, то есть между POS и sim v, между sim v и C и т. Д. (См. Уродливые красные линии на графике). Я борется с geom_vline не повезло. В качестве альтернативы, я хотел бы добавить пустое пространство между блоками.

2) Если я распечатаю этот сюжет в оттенках серого, я не могу различить разные блоки. Я пытаюсь заставить другую палитру с:

scale_colour_manual(values=c("black","darkgray","gray","white")) 

Опять же, не повезло, сюжет не изменился вообще.

Что вы посоветуете?

+3

вы должны попробовать играть с facet_grid и facet_wrap. Если вы публикуете воспроизводимое, нам легче помочь. –

+1

Я думаю, вы имеете в виду «горизонтальные» линии. Кроме того, Эрик прав: 'facet_wrap' или' facet_grid', вероятно, являются лучшим решением для этого. – smillig

ответ

5

Будет ли это работать на вас?

require(ggplot2) 
mtcars$cyl2<- ifelse(mtcars$cyl > 4, c('A'), c('B')) 
p <- ggplot(mtcars, aes(factor(cyl), mpg)) 
p + geom_boxplot() + facet_grid(. ~ cyl2, scales = "free", space = "free") 

даст что-то вроде этого, bbb

1

Чтобы изменить цвет заливки, вам нужно именованный вектор значений. Названия должны точно совпадать с именами категорий оси y.

scale_fill_manual(values=c("POS"="black", "sim v"="gray50", 
          "C"="gray80", "sim t"="white")) 

Чтобы отделить категории по оси y, попробуйте facet_grid().

facet_grid(factor(MY_CATEGORY) ~ ., drop=TRUE) 

Я не уверен, что это сработает, потому что у меня нет данных для его проверки.

4

Никто не закрыл маршрут горизонтальной линии, поэтому я думал, что добавлю его. Не знаю, почему geom_vline() не работал на вас. Вот что я сделал (выбрал стравливать подход Эрика FaiL в):

require(ggplot2) 
p <- ggplot(mtcars, aes(factor(cyl), mpg)) 
p <- p + geom_boxplot(aes(fill=factor(cyl))) + coord_flip() 
p <- p + geom_vline(xintercept=c(1.5,2.5)) 
p 

Там только три присущ рефлективные, вербальные здесь, но в игре вокруг, ggplot появляется, чтобы поместить их в целых точках. Просто выясните, в какой ячейке вы хотите получить строку после (nth) и поместите аргумент xintercept в n+0.5 для строки. Вы можете, очевидно, изменить толщину и цвет по своему вкусу: просто добавьте size=width и colour="name" после бит xintercept.

Кстати, geom_vline(), похоже, работает на меня независимо от того, до или после coord_flip(). Я нахожу это контр-интуитивным.


Я не уверен, что bdemarest правильно, что вам нужны имена, соответствующие названиям категорий.Я думаю, проблема заключается в том, что вы использовали scale_colour_manual(), который применяется, если вы использовали aes(..., colour=var), тогда как вы использовали fill=var. Таким образом, вам нужно scale_fill_manual. Основываясь на вышесказанном, мы можем добавить:

p <- p + scale_fill_manual(values=c("black","gray","white")) 
p 

Отметьте, что я не определял имена факторов для соответствия цветов. Я думаю, что цвета просто применяются к вашим уровням факторов в соответствии с их порядком, но я могу ошибаться.


Конечный результат всего вышеперечисленного:

cyl boxplot

+0

Есть ли способ ручного уменьшения ширины ящиков, чтобы они не выглядели так «жирными»? –

+1

@ baha-kev: Да, хотя по какой-то причине это, похоже, не документировано? Я смог сделать «p + geom_boxplot (aes (fill = factor (cyl)), width = 0.5) + coord_flip()'. Замените 0.5 тем, что вы хотите. Он упоминается в [stat_boxplot] (http://had.co.nz/ggplot2/stat_boxplot.html), но не [geom_boxplot] (http://had.co.nz/ggplot2/geom_boxplot.html). – Hendy

+0

Хорошая работа; благодаря- –

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