R中的堆叠条形图

R中的堆叠条形图,r,csv,stacked-chart,R,Csv,Stacked Chart,我有一个如下的csv文件,我想做一个堆叠的条形图,x轴是链接列,y轴显示频率,每个条形图根据频率和频率分组。当我读取csv并将其交给条形图时,它不起作用。我搜索了很多,但所有的示例数据都是列联表的形式。我不知道我该怎么办 link Freq_E Freq_S 1 tube.com 214 214 2 list.net 120 120 3 vector.com 119 118 4 4cdn.co 9

我有一个如下的csv文件,我想做一个堆叠的条形图,x轴是链接列,y轴显示频率,每个条形图根据频率和频率分组。当我读取csv并将其交给条形图时,它不起作用。我搜索了很多,但所有的示例数据都是列联表的形式。我不知道我该怎么办

           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

您应该查看优秀的
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")
df“它不起作用”并不是我熟悉的R中的错误消息,但我猜您的问题是您试图在
数据帧上使用
条形图
,而您应该使用
矩阵
向量

假设您的
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

x+1。与此问题无关,但
read.table
有一个
text
参数,因此您不再需要使用
textConnection
。-)旧习惯难以改变:)简单搜索“R中的堆叠条形图”会得到多个重复项,例如,和。原来的海报对SO来说并不新鲜,也没有任何迹象表明他/她确实在努力寻找答案。我们对不配的人太好了。投票关闭。好吧,我无法将我的数据集格式化为barplot的适当输入,而您提到的上述示例解释了如何制作堆叠图。是最相似的一个,但仍然没有解决我的问题。拜托,那是虚伪的。您没有提供自己的代码,也没有任何迹象表明您尝试了任何方法来解决问题。这里有几十个关于重塑数据的现有问题和答案,这些问题和答案本可以为您提供您想要的答案。我想,ggplot是另一个老习惯。我几乎从未使用过基本绘图函数+1.@Codoremifa,我实际上并不经常绘图,而且我已经习惯了基本绘图,只用于探索我的数据。因此,“ggplot”语法对我来说并不自然。我把它放在“学习”列表上已经有一段时间了,但还没有开始学习。你能解释一下df[-1]的作用吗?@Marjan,我在代码中添加了一些注释,这样你就可以看到正在做什么了。R中的
矩阵
不能有多种数据类型(数字、字符等),因此我只创建了数字部分的矩阵,这意味着必须删除第一列(
df[-1]
)。