R:使用行

时间:2018-05-07 21:46:52

标签: r ggplot2

我创建了一个包含随机数据xy的数据框。其中 x 20x10 矩阵且 y:20x1 。 这是数据框的负责人:

          V1         V2        V3        V4         V5         V6        V7
1 0.02817177 0.50219235 0.4380900 0.1016292 0.26199577 0.89682227 0.3329234
2 0.35670341 0.13153117 0.7640606 1.4032035 0.06884403 0.04999577 1.3631137
3 0.85262638 0.07891709 0.2619613 1.7767756 0.37888356 1.34534931 0.4691473
4 0.51336525 0.88678481 0.7734046 0.6228674 2.58195893 1.93121153 0.8428756
5 1.01820300 0.11697127 0.8143791 0.5222834 0.12983414 0.70958158 1.4579937
6 1.02147908 0.31863009 0.4384506 1.3222310 0.71302498 0.15790503 0.4003059
         V8        V9         V10       V11
1 0.7737134 0.4084250 0.242269499 1.2397228
2 0.4240024 2.1364939 0.059031382 0.5898739
3 0.5839470 0.1568219 0.177271868 0.1240193
4 0.4150357 0.6600489 0.794680268 0.5237078
5 1.5452617 0.9818344 0.006737787 0.6202280
6 0.5187495 1.1136437 0.629790293 0.7082216 

我想要做的是用y=V1

绘制x=V2

然后y=V1x=V3

然后y=V1x=V4等等。

我已经用ggplot编写了一个可重现的代码,下面是代码:

set.seed(100)
x=matrix(rnorm(20*10, mean = 0, sd=1), ncol=10)
y=matrix(rnorm(20, mean = 0, sd=1), ncol=1)
x=abs(x)
y=abs(y)
df=as.data.frame(cbind(y,x))
#plotting
ggplot(data=df, aes(x=V2, y=V1, group=1)) +geom_line()
ggplot(data=df, aes(x=V2, y=V1, group=1)) +geom_line()
ggplot(data=df, aes(x=V3, y=V1, group=1)) +geom_line()
ggplot(data=df, aes(x=V4, y=V1, group=1)) +geom_line()

有没有办法只为x的每个值写一行ggplot(data=df, aes(x=V2, y=V1, group=1)) +geom_line()?我尝试了一个循环,但它并没有真正起作用。 我怎么能在e plot上添加所有这些线条,而不是单独的图。

1 个答案:

答案 0 :(得分:1)

您可以创建一列x值,然后使用group参数告诉ggplot他们属于哪一行:

df2 <- tidyr::gather(df, "x_group", "x_val", V2:V11)
head(df2)
#           V1 x_group      x_val
# 1 0.02817177      V2 0.50219235
# 2 0.35670341      V2 0.13153117
# 3 0.85262638      V2 0.07891709
# 4 0.51336525      V2 0.88678481
# 5 1.01820300      V2 0.11697127
# 6 1.02147908      V2 0.31863009

ggplot(data=df2, aes(x=x_val, y=V1, group=x_group, color = x_group)) + geom_line()

lines colored by group