使用具有矩阵作为输入的ggplot或dygraph绘制线图

时间:2015-06-19 07:22:40

标签: r ggplot2 dygraphs

我有一个包含6列和5行的矩阵。第一列是周指数,其余是百分比变化。它可能看起来像这样:

我想在R中创建一个美学上令人愉悦的折线图,使用带有标记轴和彩色线条的ggplot或dygraph(第2到第6列)

任何扩展的帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您对“美观”图表的请求有点模糊,但是您可以使用ggplot2制作带标签且色彩丰富的图表。

首先模拟一些数据以符合您描述的格式:

set.seed(2015)
df = data.frame(week = 1:5, 
                pct1 = sample(1:100, 5), 
                pct2 = sample(1:100, 5), 
                pct3 = sample(1:100, 5), 
                pct4 = sample(1:100, 5), 
                pct5 = sample(1:100, 5))

df
  week pct1 pct2 pct3 pct4 pct5
1    1    7   36   71   89   70
2    2   84   50   39   27   41
3    3   30    8    4    8   21
4    4    4   64   40   79   65
5    5   14   99   72   37   71

要使用ggplot2生成所需的绘图,您应该将数据转换为“长”格式。我使用包gather中的函数tidyr(您也可以使用包melt中的等效reshape2函数)。

library(tidyr)
library(ggplot2)

# Gather the data.frame to long format
df_gathered = gather(df, pct_type, pct_values, pct1:pct5)

head(df_gathered)
  week pct_type pct_values
1    1     pct1          7
2    2     pct1         84
3    3     pct1         30
4    4     pct1          4
5    5     pct1         14
6    1     pct2         36

现在,您可以使用pct_type变量进行着色,轻松生成绘图。

ggplot(data = df_gathered, aes(x = week, y = pct_values, colour = pct_type)) + 
  geom_point() + geom_line(size = 1) + xlab("Week index") + ylab("Whatever (%)")

ggplot2_example

注意: 如果变量week是一个因素(我假设它是一个数字,正如您所称的“周指数”),您还需要告诉ggplot按{{1}对数据进行分组像这样:

pct_type