2013-09-14 2 views
0

Я не могу получить ggplot2, чтобы показать перерывы в горизонтальных барах. Код выглядит следующим образом:ggplot 2: как показывать перерывы

dat <- data.frame(
    result = c(replicate(50, 'ok'), replicate(17, 'error'), replicate(35, 'notrun')), 
    test = 'test', 
    count = 'count' 
) 

ggplot(data=dat, aes(x=test, y=count, fill=result)) + 
    geom_bar(stat="identity") + 
    scale_fill_manual(values = c(ok = '#00BA38', error='#F8766D', notrun='gray')) + 
    xlab("") + ylab("") + 
    scale_x_discrete(label="") + 
    scale_y_discrete(breaks = c(1, 7, 9)) + 
    coord_flip() 

ответ

2

ggplot рассчитывает автоматически, если stat=identity аут. В этом случае вы можете оставить переменный счетчик, как хорошо:

dat <- data.frame(
    result = c(replicate(50, 'ok'), replicate(17, 'error'), 
       replicate(35, 'notrun')), 
    test = 'test') 

ggplot(data=dat, aes(x=test, fill=result)) + 
geom_bar() + 
coord_flip() + 
scale_fill_manual(values = c(ok = '#00BA38', error='#F8766D', notrun='gray')) 

Для уточнения я привожу документацию по geom_bar():.

«По умолчанию geom_bar использует стат =» мусорное ведро»Это делает высоту каждого бара, равного количеству случаев в каждой группе, и это несовместимо с значениями отображения для эстетики y. Если вы хотите, чтобы высоты баров отображали значения в данных, используйте stat = "identity" и сопоставьте значение к эстетике ».

Итак, что вы делали, это поместить переменную count на ось y, которая имела одинаковое строковое значение «count» для каждой строки и, следовательно, не могла быть представлена ​​в числовом масштабе.

enter image description here

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