在GGplot中绘制多条线,并用不同的线对应不同的年份

时间:2018-11-20 20:51:28

标签: r ggplot2 aggregate

我正在尝试使用ggplot绘制多行(按年分类)以获取分类变量的均值。我很沮丧,尝试过各种方法,但不能完全得到我想要的。我有原始观测值,每个观测值上都带有年份标志,并附加了损失值,但这是我试图按年/司法方向对平均损失进行分组的快照。

我想按分类变量级别汇总所有损失值,然后按年份进一步汇总这些损失值

我的目标是:

我想要一个图,该图具有取决于变量的可变数量的级别(对于JudicialOrientation,我有3个级别:防御,中性,原告),所以这些将是x值,然后我想有一个连接均值的折线图在每三个级别之间,但我想要代表2006、2007、2008等的多行。

因此,对于该特定级别,我将使用不同的彩色线来表示不同年份的MeanLoss值。我希望这是有道理的。

我是ggplot的新手,我看到有些人使用一行,而另一些人使用多行。两种方法都可以。

到目前为止的尝试:

ggplot() +geom_line(data=df1, aes(x=JudicialOrientation, y = MeanLoss, color=Year))

带有一些dplyr代码以获取聚合均值的示例数据帧:

df <-data.frame(Year=c("2006","2006","2006","2007","2007","2007","2008","2009","2010","2010","2009","2009"), 
           JudicialOrientation=c("Defense","Plaintiff","Plaintiff","Neutral","Defense","Plaintiff","Defense","Plaintiff","Neutral","Neutral","Plaintiff","Defense"),
           Loss = c(100000,100,2500,100000,25000,0,7500,5200, 900,100,0,50)
           )


df1 <- df%>% group_by(Year,JudicialOrientation) %>% summarise(MeanLoss =mean(Loss))

让我知道您可能有的任何提示。谢谢!

1 个答案:

答案 0 :(得分:1)

我想您在运行代码后看到了消息。

  

geom_path:每个组仅包含一个观察值。您需要调整小组的审美吗?

因此,调整小组的审美观念会为您提供

ggplot(data = df1, aes(x = JudicialOrientation, y = MeanLoss, color=Year, group = Year)) +
  geom_line() +
  geom_point()

enter image description here

我添加了geom_point,因此您看到了例如实际上是2008年。您不会仅凭geom_line看到它们。希望这可以帮助。


您甚至可以让stat_summary为您进行汇总,然后直接使用df

这里是

ggplot(df, aes(x = JudicialOrientation, y = Loss, color = Year, group = Year)) +
  stat_summary(geom = "line", fun.y = mean) +
  stat_summary(geom = "point", fun.y = mean)