簡體   English   中英

如何在數據框中繪制兩個連續的列

[英]How to plot two consecutive columns in a data frame

我有一個這樣的數據框

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

我本來是想使每列成為一個特殊的向量,但是我將要有一個函數,這樣,無論我有多少列都可以用不同的顏色繪制兩列都沒有關系。

因此,我對一個簡單的函數感興趣,該函數將同時繪制兩個列的整個數據框。

首先考慮您的分析是否經常需要這些東西,因為p1p3p5在不同情況下的含義相同。 如果是這樣,那么為案例定義一個因子變量並連接各列(使用整潔的數據 ),您會發現許多任務會更容易。

如果要關閉,請嘗試類似這樣的事情,假設數據框中的所有列都是數字,並且按照您的描述進行繪制:

#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是如何區分列集的示例。

另外一個選項

# 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()

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM