用户

时间:2018-02-16 13:47:10

标签: r plot ggplot2

我有一年的数据以月份分隔,保存为“MMM”格式的因子(含义“JAN”,“FEB”......) 每个User都有一个按月计算的度量平均值。 即

User Month Metric
U1  JAN 0.55
U1  FEB 0.52
U1  MAR 0.40
U2  JAN 0.94
U2  FEB 0.06
U2  MAR 0.76
U3  JAN 0.07
U3  FEB 0.03
U3  MAR 0.17

如何为每个显示user月度演变的metric(在同一图表中)绘制一条线? (请记住Month存储为因子)

1 个答案:

答案 0 :(得分:2)

1)动物园假设输入在本答案末尾的注释中可重复提供,请将月份替换为月份数字,转换为每个用户一列的宽动态动物园系列和情节。添加月轴。显示经典和ggplot2图形。

library(zoo)

DF2 <- transform(DF, Month = match(Month, toupper(month.abb)))
z <- read.zoo(DF2, split = "User", index = "Month")

plot(z, screen = 1, xaxt = "n")
labs <- month.abb[time(z)]
axis(1, time(z), labs)

library(ggplot2)
autoplot(z, facets = NULL) + 
   scale_x_continuous(breaks = time(z), labels = labs)

screenshots

2)直接ggplot2 以正确的顺序将因子级别替换为级别。此处的代码假定数据框按用户和月份排序,即数据框中的JAN位于FEB之前,等等,但可能未正确设置月份的因子级别。如果因子水平已经正确设置,那么我们可以省略这部分。最后的情节。

library(ggplot2)

DF2 <- transform(DF, Month = factor(Month, levels = unique(Month)))
ggplot(DF2, aes(Month, Metric, group = User)) + geom_line()

screenshot

注意

使用的输入,可重复的形式是:

Lines <- "User Month Metric
U1  JAN 0.55
U1  FEB 0.52
U1  MAR 0.40
U2  JAN 0.94
U2  FEB 0.06
U2  MAR 0.76
U3  JAN 0.07
U3  FEB 0.03
U3  MAR 0.17"
DF <- read.table(text = Lines, header = TRUE)