R 使用ggplot2在一个绘图上绘制多个图形

R 使用ggplot2在一个绘图上绘制多个图形,r,ggplot2,R,Ggplot2,我想,使用这个数据集:,以不同的色调显示4种不同的图形:GA、N1、N2、PE。对于每个图形,y轴上必须显示“m”类的所有值,x轴上必须显示“nbr” 以下是我到目前为止的代码(感谢@CMichael提供了大部分代码) 这给了我: 从美学角度来说,这正是我所需要的。然而,显示器显然是错的,有几件事让我感到困惑。首先,我似乎无法在x轴上强制使用“nbr”。我的代码是否正确?因此,根据OP的评论,这可能是绘制数据的一种方法: ggplot(dataM[dataM$category=="m" &am

我想,使用这个数据集:,以不同的色调显示4种不同的图形:GA、N1、N2、PE。对于每个图形,y轴上必须显示“m”类的所有值,x轴上必须显示“nbr”

以下是我到目前为止的代码(感谢@CMichael提供了大部分代码)

这给了我:


从美学角度来说,这正是我所需要的。然而,显示器显然是错的,有几件事让我感到困惑。首先,我似乎无法在x轴上强制使用“nbr”。我的代码是否正确?

因此,根据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_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~.)

根据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_ribbon(aes(ymin=0, ymax=value),alpha=0.3)+ 
  scale_fill_brewer(palette="Set1")

查看您的数据集,我不确定问题出在哪里<代码>nbr看起来像一个案例ID或样本号,或类似的。为什么要在x轴上绘制它?在你的数据中,GA、N1、N2和PE在[0,10]上有值,你正在绘制这些值的密度函数。这显然是错的吗?@jlhoward:它实际上很像一个时间序列,其中nbr在实际的时间序列中扮演“t”的角色。但我想我理解你的意思:我在曲线下填充是为了更好地区分它们,但它们根本不是密度。我做错了什么…@rawr我刚刚意识到我需要的不是密度图,而是一个用颜色填充的规则图,以便区分我正在绘制的“网络”