在R中为数据帧的每一行绘制不同的行

时间:2016-07-27 14:08:39

标签: r plot dataframe ggplot2

我的问题可能是基本的,但它在过去的几个小时里一直令人头痛,所以任何帮助都会非常感激。

我有一个包含~150列和~1000行的数据框。除了数据帧第1列中包含唯一ID(数据帧的每一行唯一)的值之外,数据帧的每个[i,j]单元都包含一个数值

我想绘制一个图表,其中数据框的每一行将单独绘制在一个单独的图表(图表)上(即,对于每一行,将创建具有其自己的轴的图,其值为在y轴上绘制的行,在x轴上绘制数据框的列名称)。然后,每个单独的图表将位于前一个图表的下方。

例如,如果我们假设数据框如下:

Jan = c(2, 3, 5) 
Feb = c(8, 9, 12) 
Mar = c(2.2, 7, 3) 
Apr= c(1, 3.7, 23) 
df = data.frame(Jan, Feb, Mar, Apr)

然后我的目标是将3个地块一个放在另一个之下,每个地块包含一条通过4个点的线,对应于4个月(1月,2月,3月,4月)的每个月的值。例如,第一个图将具有从值[2,Jan],[8,Feb],[2.2,Mar]和[1.0,Apr]传递的线。同样适用于接下来的两个地块。

有人可以向我指出正确的方向,并提供一些关于如何实现目标的提示吗?

非常感谢!

1 个答案:

答案 0 :(得分:2)

以下是使用您示例中melt包中的reshape2的解决方案 拥有1000多个方面(行)和150多个x-ticks(列)可能更难。

enter image description here

df = cbind(df, row_number = seq(1, 3))

df_melt = melt(df, id = "row_number")

ggplot(df_melt, aes(x = variable, y = value, group = row_number)) + 
geom_line(stat = "identity") + facet_wrap(~row_number, ncol = 1, scales = "free")