我有三个变量的数据,我现在正试图用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()
答案 0 :(得分: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))
,并注意强制从整数和数字模式中考虑因素。