2013-11-01 304 views
0

我有PostgreSQL的CSV中導出的表,我想R.創建堆積條形圖這是我在R.堆積條形圖

第一個項目這裏是我的數據和我想做的事:

enter image description here

它的接駁巴士服務,在該地區有一定供應商的質量。對於列車的每個用戶,我們根據公共汽車和火車在火車站之間的同步來分配服務質量,並計算具有理想或非常好的服務,正確的服務,不足的服務或沒有服務的用戶的百分比在gis.stackexchangegis.stackexchange

所以,這就像我的第一列作爲我的x軸標籤和我的標題作爲我的類別。數據已經標準化爲每行100%。

在Excel中,這是一些點擊,我不介意輸入幾行代碼,因爲它是已經很長的plpgsql腳本的最終結果...我寧願繼續代碼而不是轉移到Excel(我也有幾十個這樣做)。

因此,我嘗試使用Nathan Yau的「Visualize This」和書中的「R in Action」中的例子創建一個堆棧欄,但並不是很成功。通常,他們的例子使用它們與R聚合的數據並使用它們。礦已經彙總。

所以,我終於想出了一些R中的工作原理:

enter image description here

,但我不得不改變我的數據頗有幾分:

enter image description here

我轉置我的表並刪除我現在的行(ex-column)標識符。

這裏是我的代碼:

# load libraries 
library(ggplot2) 
library(reshape2) 

# load data 
stl <- read.csv("D:/TEMP/rabat/_stl_rabattement_stats_mtl.csv", sep=";", header=TRUE) 

# reshape for plotting 
stl_matrix <- as.matrix(stl) 

# make a quick plot 
barplot(stl_matrix, border=NA, space=0.1, ylim=c(0, 100), xlab="Trains", ylab="%", 
main="Qualité du rabattement, STL", las = 3) 

有,我可以用我的原CSV和有同樣的結果什麼辦法?

我有點丟在這裏......

謝謝!!!!

回答

1

嘗試ggplot2reshape庫。你應該能夠得到我試圖要與

stl$train_order <- as.numeric(rownames(stl)) 
stl.r <- melt(stl, id.vars = c("train_no", "train_order")) 
stl.r$train_no <- factor(
    stl.r$train_no, 
    levels = stl$train_no[order(stl$train_order)])  
ggplot(stl.r, aes(x = factor(train_no), y = value, fill = variable)) + geom_bar(stat = 'identity') 
+0

它的工作!! :)雖然 – fgcartographix

+0

一個小問題......當我用手工調換我的桌子時,順序是我在桌子上給出的順序(912在928之後)。不,我的列車號碼已排序,我想保持原來的順序(到出發時間...) – fgcartographix

+1

我認爲上面的編輯將保留原來的順序。 – colcarroll

1

您似乎手動調換了矩陣。這可以通過t()函數在R中完成。

添加以下行as.matrix(stl)行後:

stl_matrix <- t(stl_matrix)

+0

圖表,但它需要我的第一列(train_no)作爲一種價值... :( – fgcartographix