我有一个像下面这样的csv文件,我想制作一个堆积条形图,其中x轴是链接列,y轴显示频率,每个条形图基于Freq_E和Freq_S进行分组。当我阅读csv并将其交给barplot时它不起作用。我搜索了很多,但所有的例子数据都是列联表的形式。我不知道该怎么做......
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
答案 0 :(得分:4)
“它不起作用”不是我熟悉的R中的错误消息,但我猜你的问题是你试图在barplot
上使用data.frame
你应该使用matrix
或vector
。
假设您的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
答案 1 :(得分: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")