我有一个包含6列和5行的矩阵。第一列是周指数,其余是百分比变化。它可能看起来像这样:
我想在R中创建一个美学上令人愉悦的折线图,使用带有标记轴和彩色线条的ggplot或dygraph(第2到第6列)
任何扩展的帮助将不胜感激。
答案 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 (%)")
注意:强>
如果变量week
是一个因素(我假设它是一个数字,正如您所称的“周指数”),您还需要告诉ggplot
按{{1}对数据进行分组像这样:
pct_type