将不同的数据集与R中的堆积条形图进行比较

时间:2014-06-18 11:08:36

标签: r

我需要比较两种不同的方法,每种方法在一个图形中使用堆叠条形样式有3种不同的结果。

我想绘制一个图,以便x轴显示实验,y轴显示结果。每个栏以堆积条形式填充3个结果。

experiment method resuult1 result2 result3
1            m1      1        2       3 
1            m2      4        5       6
2            m1      7        8       9
2            m2     10        11      12
3            m1     13        14      15
3            m2     16        17      18

我有这个代码用于比较两个数据集如何更改它。

library(ggplot2);
pdf(file = '$filename.pdf', width=5, height=5);
data1 <- as.matrix(read.table('$INPUT_FILE1', header = T));
data1.experiment <- as.numeric(data1[,\"Experiment\"]);
data1.obs <- as.numeric(data1[,\"Result1\"]);
data1.method <- as.factor(data1[,\"Method\"]);
df <- data.frame(data1.experiment, data1.method, data1.obs);

orderlist = c(&#34; 70&#34;,&#34; 100&#34;,&#34; 130&#34;,&#34; 160&#34;,&#34; 190&#34 ;,&#34; 260&#34;);

ggplot(df, aes(x = data1.experiment, y = data1.obs, fill = data1.method), ylim=c(60000, 2800000)) + 
    geom_bar(stat='identity', position='dodge')+
    labs(x='$xlabel',y='$ylabel', fill='Methods') + 
    scale_fill_manual(values = c('red','blue'), labels = c('DTB-MAC', 'IEEE802.11P')) + 
    scale_x_continuous(breaks = orderlist)+
    theme(legend.position = c(1, 1), legend.justification = c(1, 1), legend.background     = element_rect(colour = NA, fill = 'white'));

2 个答案:

答案 0 :(得分:2)

你说你需要比较这些方法。如果您在x轴上表示实验并在y上表示结果,那么您将如何表示方法???我这样做的方法是使用方面。以下是使用ggplot2进行操作的代码。

dat <- read.csv("data.csv")
library(reshape2)
library(ggplot2)
dat1 <- melt(dat,id.vars = c("experiment","method"))
p <- ggplot(dat1,aes(experiment,value,fill=variable))+geom_bar(stat="identity")+
      facet_wrap(~method,nrow=1)
p

Plot

答案 1 :(得分:0)

使用ggplot2包可以最好地探索这种多维图表。我将在此假设您粘贴的数据存储在data.frame d

require(reshape2)    ## needed to have all experiments in one variable
require(ggplot2)     ## needed for the great vizualizations

d <- melt(d, id.vars=c("experiment", "method"))
ggplot(d, aes(x=factor(experiment), y=value, fill=variable)) + 
  geom_bar(stat="identity") + 
  facet_wrap(~method)

您可以使用自定义标签进一步优化图表,但这在此处探索的时间太长。 ggplot2标记的问题有很多很好的例子。

编辑:更正显示方法,已由@ user2743244

回答