2013-11-21 76 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