2015-12-11 2 views
1

Я пытаюсь создать довольно простую гистограмму с гистограммой с geom_bar, но значения по вертикали не отражают значения, переданные вызову ggplot.R - geom_bar не дает правильных значений

код я использую:

p<-ggplot(data0, aes(x=variable, y=as.numeric(value), fill=season)) 
p+geom_bar(stat='identity')+ facet_grid(specie~region) + ... 

где str(data0) гласит:

'data.frame': 720 obs. of 5 variables: 
$ specie : Factor w/ 5 levels "","ozone.DU",..: 3 3 3 3 4 4 4 4 5 5 ... 
$ season : Factor w/ 5 levels "","autumn (SON)",..: 3 4 2 5 3 4 2 5 3 4 ... 
$ region : num 1 1 1 1 1 1 1 1 1 1 ... 
$ variable: Factor w/ 15 levels "3","4","5","6",..: 1 1 1 1 1 1 1 1 1 1 ... 
$ value : Factor w/ 736 levels "","1.872389649",..: 28 35 20 12 26 33 19 11 5 

Стержни производит не отражают никакого значения dataframe, и постоянно расти со значением!

the values of the bars are not what I'd expect

любое предложение приветствуется. Спасибо

+0

Что вы ожидаете? – mts

+0

См. Http://stackoverflow.com/questions/3418128/how-to-convert-a-factor-to-an-integer-numeric-without-a-loss-of-information. (Этот вопрос, скорее всего, ограничен в будущем, поскольку проблема не связана с ggplot2.) –

ответ

3

Ваша проблема с as.numeric фактора. Вы не будете получать числовое значение фактора, а скорее упорядоченное значение фактора. Сделайте test <- as.numeric(data0$value) и посмотрите на результат test.

Что вам нужно сделать, так это не преобразовать столбец data0$value в какой-либо фактор, когда вы получаете набор данных.

+1

Хотя лучше не иметь, чтобы ваши числовые значения были преобразованы в фактор в первую очередь, учитывая, что они являются факторами, вы также можете делать ' as.numeric (as.character (data0 $ value)) '(или внутри' aes' в ggplot 'as.numeric (as.character (value))') для преобразования обратно в правильные числовые значения. – eipi10

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