Как предотвратить сброс данных geom_histogram при вызове fill = aesthetic? - PullRequest
0 голосов
/ 05 января 2019

Я хочу сгенерировать гистограмму с данными 2 классов (событие = 0 против события = 1). В моем случае у меня только один случай, когда Event = 0. Гистограмма отображается правильно, если я не вызываю эстетику 'fill =', но отбрасываю случай Event = 0, когда я вызываю 'fill'. Проблема исчезает, когда я масштабирую Y непрерывно, но я хочу использовать шкалу log10. Для демонстрации (я использую текущие версии R, RSTudio и связанные с ними пакеты):

library(ggplot2)

Dur<-c(200,200,200,200,10,20,30)
Event<-c(0,1,1,1,1,1,1)
a<-data.frame(cbind(Dur,Event))
a$Event1<-as.character(a$Event)

p<-ggplot(data=a,aes(x=Dur,fill=Event1))+
  geom_histogram(color='black')+
  scale_fill_manual(values=c("red","blue"),name='Censor')+
  scale_y_log10()+
  labs(title='Attempt Duration: WAL',x="Duration (s)")
p

Dropped value for event=0 в отличие от этих сюжета правильно

p<-ggplot(data=a,aes(x=Dur))+
  geom_histogram(color='black')+
  scale_fill_manual(values=c("red","blue"),name='Censor')+
  scale_y_log10()+
  labs(title='Attempt Duration: WAL',x="Duration (s)")
p

No fill

p<-ggplot(data=a,aes(x=Dur,fill=Event1))+
  geom_histogram(color='black')+
  scale_fill_manual(values=c("red","blue"),name='Censor')+
  #scale_y_log10()+
  labs(title='Attempt Duration: WAL',x="Duration (s)")
p

No log-scale

Точно так же, если я добавлю второй регистр '0', все будет построено правильно. Идеи?

1 Ответ

0 голосов
/ 07 января 2019

«Событие» = 0 не удаляется. log(1) равняется 0.

...