2015-12-11 87 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 

條生產不反映數據幀的任何值,並與價值不斷上升!

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