2016-08-23 109 views
-1

我有三個變量的數據,我現在試圖用ggplot2繪製其中兩個。ggplot2繪圖錯誤

library(ggplot2) 
x=1:50 
y=x^2 
z=rep(c("p","sp","n","sn","nt"),each=10) 
mydata=as.data.frame(cbind(x,y,z)) 
ggplot(mydata, aes(x=x, y=y)) + geom_point() 

根據數據,曲線應該是曲線。但是,當我運行代碼時,我得到下圖沒有意義。代碼中有錯誤嗎?非常感謝。 enter image description here

回答

1

當您使用cbind創建矩陣時,它會強制使用最常見的類型,在本例中爲character。當您撥打as.data.frame.matrix它將默認創建factors,根據factor的增加級別爲您提供此異常排序。使用的正確函數是data.frame,其中包含多個數據列的參數。

library(ggplot2) 
x=1:50 
y=x^2 
z=rep(c("p","sp","n","sn","nt"),each=10) 
mydata= data.frame(x,y,z) 
ggplot(mydata, aes(x=x, y=y)) + geom_line() 

看一看str(data.frame(x,y,z))而不是str(as.data.frame(cbind(x,y,z)),並注意從強迫整數和數值模式計算在內。

+0

非常感謝。你是對的,'as.data.frame'與'cbind'將把數據轉換成因子。感謝您的幫助。 –