使用ggplot2在一个图上绘制了几张图

时间:2014-01-11 16:51:00

标签: r ggplot2

我希望,使用此数据集:https://dl.dropboxusercontent.com/u/73950/mydata.csv,可以显示4种不同的图形:不同色调的GA,N1,N2,PE。对于每个图形,所有类别“m”的值必须显示在y轴上,x轴上带有“nbr”。

这是我到目前为止的代码(感谢@CMichael的大部分代码)

require(reshape2)

mydata = read.csv(file="/Users/Rodolphe/Downloads/mydata.csv", sep=";", header=TRUE)
dataM = melt(mydata,c("nbr"))

#parse labels to identify vertical category and fill the value correspondingly
dataM$order = ifelse(grepl("GED",dataM$variable),"GED",ifelse(grepl("RAN",dataM$variable),"RAN",ifelse(grepl("EIG",dataM$variable),"EIG","BET")))
#parse labels to identify horizontal category and fill the value correspondingly
dataM$net = ifelse(grepl("PE",dataM$variable),"PE",ifelse(grepl("GA",dataM$variable),"GA",ifelse(grepl("N1",dataM$variable),"N1","N2")))
#parse label to identify category
dataM$category = ifelse(grepl("mNC",dataM$variable),"mNC",ifelse(grepl("aSPL",dataM$variable),"aSPL",ifelse(grepl("d",dataM$variable),"d","m")))


ggplot(dataM[dataM$category=="m" & dataM$order=="RAN",], aes(value, fill=net)) + geom_density(alpha = .3, color=NA)  + scale_fill_brewer(palette="Set1")

这给了我:

enter image description here

这就是美学,正是我所需要的。然而,显示器显然是错误的,有些事情使我感到困惑。首先,我似乎无法在x轴上强制“nbr”。我是否在使用此代码的正确轨道上?

2 个答案:

答案 0 :(得分:1)

因此,基于OP的评论,这可能是绘制数据的一种方式:

ggplot(dataM[dataM$category=="m" & dataM$order=="RAN",], aes(x=nbr, y=value, fill=net)) + 
  geom_ribbon(aes(ymin=0, ymax=value),alpha=0.3)+ 
  scale_fill_brewer(palette="Set1")

或者,恕我直言是一个更好的选择:

ggplot(dataM[dataM$category=="m" & dataM$order=="RAN",], aes(x=nbr, y=value, fill=net)) + 
  geom_line(aes(color=net))+
  geom_ribbon(aes(ymin=0, ymax=value),alpha=0.3)+ 
  scale_fill_brewer(palette="Set1")+
  facet_grid(net~.)

答案 1 :(得分:0)

根据OP的评论,这可能是绘制数据的一种方法:

print(df)

   State         City
0  ['AK']  ['Yakutat']
1  ['AK']   ['Apache']