2013-11-21 117 views
0

我有一個類似於下面的csv文件,我想要製作一個堆疊的條形圖,其中x軸是鏈接列,y軸顯示頻率,每個條形根據Freq_E和Freq_S分組。當我讀取csv並將其提供給barplot時,它不起作用。我搜索了很多,但所有示例數據都是以列聯表的形式出現的。我唐諾我應該怎麼辦?R中的堆積條形圖

  link Freq_E Freq_S 
1   tube.com 214 214 
2   list.net 120 120 
3   vector.com 119 118 
4   4cdn.co 95 96 
+3

爲「R中堆積柱狀圖中一個簡單的搜索'給出多個副本,如[this](http://stackoverflow.com/questions/12592041/plotting-a-stacked-bar-plot),[this](http://stackoverflow.com/questions/7583432/plot -stacked-bar-plot-in-r)和[this](http://stackoverflow.com/questions/19553605/stacked-barchart)。原來的海報並不是什麼新東西,也沒有表明他/她實際上已經努力尋找答案。我們對這個不應該太善良。投票結束。 – SlowLearner

+0

好吧,我無法將我的數據集格式化爲barplot的適當輸入,而您提到的上述示例解釋瞭如何製作堆積圖。 [這](http://stackoverflow.com/questions/19553605/stacked-barchart)是最相似的一個,但仍然沒有解決我的問題。 – Marjan

+0

來吧,這是不真誠的。你沒有提供你自己的代碼,沒有任何證據表明你試圖解決問題。在這裏有幾十個現有的關於重構數據的問題和答案,這些數據可能會給你你想要的答案。 – SlowLearner

回答

4

「它不工作」是不是錯誤消息在R,我很熟悉,但我猜你的問題是,你正試圖使用​​ barplot,而你應該使用matrixvector

假設你data.frame被稱爲「DF」(截至Codoremifa的回答開始定義的),你可以嘗試以下方法:

x <- as.matrix(df[-1]) ## Drop the first column since it's a character vector 
rownames(x) <- df[, 1] ## Add the first column back in as the rownames 
barplot(t(x))   ## Transpose the new matrix and plot it 

enter image description here

+0

ggplot是另一種老習慣,我想。我幾乎從未使用過基地繪圖功能。 +1。 – TheComeOnMan

+0

@Codoremifa,我實際上並不經常打算,而且我已經習慣了探索我的數據的基本情節。因此,「ggplot」語法對我來說並不自然。我已經把它保留在我的「學習」列表上很長一段時間了,但還沒有得到解決。 – A5C1D2H2I1M1N2O1R2T1

+0

哇!非常感謝。 – Marjan

3

你應該看的優秀ggplot2庫,試試這個代碼片段你的榜樣 -

df <- read.table(textConnection(
'link Freq_E Freq_S 
tube.com 214 214 
list.net 120 120 
vector.com 119 118 
4cdn.co 95 96'), header = TRUE) 

library(ggplot2) 
library(reshape2) 

df <- melt(df, id = 'link') 
ggplot(
    data = df, 
    aes(
     y = value, 
     x = link, 
     group = variable, 
     shape = variable, 
     fill = variable 
    ) 
) + 
geom_bar(stat = "identity") 
+2

+1。與這個問題無關,但'read.table'有一個'text'參數,所以你不需要再使用'textConnection'。 ;-) – A5C1D2H2I1M1N2O1R2T1

+0

舊習慣難度很大:) – TheComeOnMan