【问题标题】:Plotting columns as series将列绘制为系列
【发布时间】:2017-07-05 12:35:31
【问题描述】:

我有一个数据框,它有 12 列(一年中的每个月一列)和一个 id。此数据框中的每条记录对应于客户在过去 12 个月中进行的交易金额(以美元为单位)。我想将这些列绘制为系列。而且我还想在数据框中绘制所有客户。 x 轴将是月份索引,y 轴将是美元价值。因此,基本上对于每个客户,我都需要在同一张图表上绘制折线图或系列图。

生成随机数据的代码

a <- data.frame(id = seq(1,1000,1))
b <- data.frame(replicate(12,sample(1000:100000,1000,rep=TRUE)))
df <- cbind(a,b)

这是我尝试过的,但不是我想要的

library(reshape2)
library(ggplot2)
df_lg <- melt(df, id = 'id') # convert from wide to tall
ggplot(data=df_lg,
       aes(x=variable, y=value, colour=variable)) +
  geom_line()

任何想法如何做到这一点?

【问题讨论】:

  • 您的示例数据集中有 1000 个id。用颜色来可视化 1000 条线是不可能的。您可以尝试将您的aes 调用更改为aes(x=variable, y=value, colour =id, group = id)),但无法解释此类图。
  • 正如@ycw 所说,绘制该图不会有任何好处,但如果您想使用base-R:matplot(t(df), type = "l")

标签: r ggplot2


【解决方案1】:

只需将group 添加到您的美学中,因此colourgroup 应该是您想要在图例中使用的id 变量。

ggplot(data=df_lg,
       aes(x=variable, y=value, colour=id, group = id)) +
  geom_line()

【讨论】:

    猜你喜欢
    • 2013-11-25
    • 1970-01-01
    • 2019-10-19
    • 2018-03-12
    • 1970-01-01
    • 1970-01-01
    • 2018-03-29
    • 2020-05-21
    • 1970-01-01
    相关资源
    最近更新 更多