如何使用ggplot在线图上绘制多条线,并使它们具有不同的颜色?

时间:2020-09-14 03:13:26

标签: r ggplot2

我有一个包含3个数值的数据框

T
kWh
Month

T变量的值介于1到48之间,而kWh变量是离散的。

我正在尝试显示一个折线图,以显示每个kWh的每个T的平均Month的线形,每个Month都有一条单独的线(平均{ Y轴上的{1}}和X轴上的kWh

我的方法是以下

T

最后像这样绘制它

grouped_by_t = group_by(df, T)
summarised_by_t = summarise(grouped_by_t, Average=mean(kWh, na.rm=TRUE), Month=Month)

不幸的是,这只是在图的边缘显示了一条带有颜色渐变的线,这不是我想要的。

1 个答案:

答案 0 :(得分:1)

在没有df数据集样本的情况下,我已经生成了完整的废话数据,至少应该能够按照您要完成的任务给出图表。

尽管可以肯定地通过预先汇总数据集来完成,但您也可以基于设置stat_summary()的美观性,利用color为您进行平均。在这种情况下,stat_summary()将使用该美学作为计算平均值的分组美学。

这是生成我可怕的数据集的代码和绘图代码。还要注意,我包括在绘制之前设置df$Month的级别,否则ggplot2将默认以字母顺序表示月份。

library(ggplot2)

set.seed(1234)
df <- data.frame(
  Month=rep(month.name, each=200),
  T=sample(1:48, 2400, replace=TRUE),
  kWh=rnorm(2400, 500, 140))

df$Month <- factor(df$Month, levels=month.name)

ggplot(df, aes(x=T, y=kWh, color=Month)) +
  stat_summary(geom='line', fun=mean)

enter image description here

对于更多上下文,如果您不知道,则为fun=值设置的函数将返回一个用于y美感的值。以纯文本格式,此处的stat_summary()函数被设置为绘制一个geom_line,表示为每个mean的{​​{1}}的{​​{1}}值,每个颜色用颜色分隔df$kWh