У меня есть данные о соотношении ответов для 4 экспериментальных групп с 2 различными статистическими данными, рассчитанными для каждой группы. Я хочу следующий рисунок (который можно достичь):R ggplot geom_bar Ошибка: дискретное значение, подаваемое на непрерывный масштаб
я получить эту цифру со следующим кодом:
Group<-c('a','b','c','d','a','b','c','d')
Statistic<-c('Mean','Mean','Mean','Mean','d','d','d','d')
Val<-c(.75,.83,.79,.69,.5,.02,.1,.3)
dfm2<-data.frame(cbind(Group,Statistic,Val))
ggplot(dfm2,aes(x = Group,y = Val)) +
geom_bar(aes(fill = Statistic),position = dodge',stat='identity')
Однако, когда я изменить пределы оси у (на [0,1], так как у меня есть пропорции), добавив строку кода:
+ scale_y_continuous(limits=c(0, 1))
Я получаю
Error: Discrete value supplied to continuous scale
Поэтому я понимаю, что это означает, что у меня есть непрерывная переменная. Я попытался преобразовать свою статистическую переменную, используя as.numeric()
и множество других опций, но безрезультатно. Если кто-нибудь может помочь мне в решении этой проблемы и/или объяснить, что ее вызывает, я был бы очень благодарен.
Ah! Спасибо, отлично работает. Даже когда я неправильно использовал cbind(), я вызвал dfm2 $ Val <-as.numeric (dfm2 $ Val) после создания моего фрейма данных. str (dfm2) показало $ Val как числовое; но у меня все еще есть ошибка. Поэтому я смутился. Любые идеи о том, почему настройка as.numeric() не работает? –
У меня нет ошибки, когда я делаю преобразование 'as.numeric', а затем создаю его. Однако, когда вы конвертируете фактор-переменную, вам нужно сначала преобразовать в символ, а затем в числовой, иначе вы получите кодовые коды коэффициентов для уровней, а не фактические значения данных. Сравните 'dfm2 $ Val2 = as.numeric (dfm2 $ Val)' и 'dfm2 $ Val3 = as.numeric (as.character (dfm2 $ Val))'. – eipi10