b <- data.frame(head=c("a", "b", "c", "d", "e"),
ab=c(1, 2, 3, 4, 5), bc=c(4, 5, 6, 7, 8), ca=c(2, 3, 4, 5, 6))
等等。
我想为不同的head
值绘制(在这种情况下为5个单独的绘图),例如: a
的不同值的ab
,bc
,ca
的{{1}}的图表等等。
问题是,如果表格被调换,则更容易绘制这个,但这样做很困难。
示例,如果数据是这样的:
b
然后使用命令b <- data.frame(head=c("ab", "bc", "ca"),
a=c(1, 4, 2), b=c(2, 5, 3), c=c(3, 6, 4), d=c(4, 7, 5), e=c(5, 8, 6))
绘制a
是很简单的。但是,如何以第一行所示的其他方式绘制相同的数据。
答案 0 :(得分:1)
您可以使用reshape2
将数据集b
转换为预期的b
library(reshape2)
d1 <- dcast(melt(b,id.var="head"), variable~head, value.var="value")
d1
# variable a b c d e
#1 ab 1 2 3 4 5
#2 bc 4 5 6 7 8
#3 ca 2 3 4 5 6
或者在这种情况下:
b1 <- t(b[,-1])
colnames(b1) <- b[,1]
b1
# a b c d e
#ab 1 2 3 4 5
#bc 4 5 6 7 8
#ca 2 3 4 5 6
如果您想在同一窗口上绘制5 barplots
:
library(ggplot2)
mb <- melt(b, id.var="head")
ggplot(mb, aes(head, value))+
geom_bar(aes(fill=variable), position="dodge", stat="identity") +
theme_bw()
如果您需要使用原始b
数据集的5个单独条形图,则可以尝试:
pdf("barplots.pdf")
apply(b[,-1], 1, function(x) barplot(x))
dev.off()
答案 1 :(得分:1)
&#39; barplot&#39;可以与原始b data.frame一起使用:
barplot(as.matrix(b[,-1]), beside=T, legend.text=b$head)
对于其他分组,转置数据(由@akrun指出):
barplot(t(as.matrix(b[,-1])), beside=T, legend.text=names(b)[2:4], names.arg=b$head)