如何在数据框中绘制两个连续列

时间:2014-11-04 21:22:05

标签: r

我有一个像这样的数据框

p1=rnorm(4)
p2=rnorm(4)
p3=rnorm(4)
p4=rnorm(4)
p5=rnorm(4)
p6=rnorm(4)

df=data.frame(p1,p2,p3,p4,p5,p6)

我希望以某种方式绘制它,以便只有连续的列是xy的值。我的意思是p1p2是第一个yx,下一个p3p4是下一个xy 1}}和{{1}}。

我正在考虑让每一列成为一个特殊的向量,但我会有一个函数 无论我有多少柱子都可以,我可以用不同的颜色绘制两列。

所以我对一个简单的函数很感兴趣,它将在时间点绘制两个列的整个数据框。

2 个答案:

答案 0 :(得分:2)

首先考虑一下您的分析是否经常需要这样的事情,因为p1p3p5对于不同的情况可能具有相同的含义。如果确实如此,如果为案例定义因子变量并连接列,则会发现许多任务更容易(使用tidy data)。

对于一次性,尝试这样的事情,假设数据框中的所有列都是数字的,并且所有列都按照您的描述进行绘制:

#the plot coerces the odd and even columns into single vectors
#note they must be of the same type
plot(x = unlist(df[seq(1,ncol(df),2)]),
     y = unlist(df[seq(2,ncol(df),2)]),
     col=rep(1:(ncol(df)/2),each=nrow(df)))

颜色参数col是如何区分列集的示例。

答案 1 :(得分:1)

另一个选择

# your random data ('df' is reserved, so using 'dat')
dat <- data.frame(matrix(rnorm(4*6), ncol=6))

# extract every consecutive pair of cols to data.frame with a series name,
# store in list
df_list <- lapply(seq(1, ncol(dat), 2),
                  function(x) data.frame(series=x, x=dat[,x], y=dat[,x+1]))

# rbind the list together and plot
ggplot(do.call(rbind, df_list), aes(x=x, y=y, color=factor(series))) +
    geom_point() + theme_bw()

enter image description here