2016-08-23 102 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'将把数据转换成因子。感谢您的帮助。 –