我想在同一图中绘制多个文件;每个文件都有两列数据。
问题是每个文件都有不同的行数(529,567,660 等(
对于行数相同的数据,我执行以下操作:
data1 <- read.table(file="ro0.2/T0.1/sq_Ave.dat")
x1 <- data1[1]
y1 <- data1[2]
data2 <- read.table(file="ro0.4/T0.1/sq_Ave.dat")
x2 <- data2[1]
y2 <- data2[2]
max_valuex = max(x1,x2,x3,x4,x5)
max_valuey = max(y1,y2,y3,y4,y5)
matplot(x1,cbind(y1,y2,y3,y4,y5),type="l",
col=c("black","red","green","blue","orange"),
lwd = 2,xlab = expression(q*sigma), ylab="S(q)", col.lab="black",
cex.lab=1.5,font.lab=4, xaxt = "n", yaxt = "n", xlim = c(0,max_valuex),
ylim = c(0,max_valuey), xaxs = "i", yaxs = "i")
但是,这不适用于具有不同行数的文件。
答辩机构投诉:
Error in data.frame(..., check.names = FALSE) :
arguments imply differing number of rows: 529, 567, 661
Calls: matplot -> ncol -> as.matrix -> cbind -> cbind -> data.frame
任何想法或建议将不胜感激!
提前非常感谢
S H-V
我想你可以用NA
s来放大你的向量。我相信这在下次处理您的数据时无关紧要。例如:
a= 1:10
b=1:5
d=1:7
data.frame(a,b,d) #different length
#Error in data.frame(a, b, d) :
#arguments imply differing number of rows: 10, 5, 7
length(b) = length(d) = length(a)
data.frame(a,b,d) # no error now
a b d
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
5 5 5 5
6 6 NA 6
7 7 NA 7
8 8 NA NA
9 9 NA NA
10 10 NA NA
设法将 y 轴数据加载到列表对象中,该列表对象将是 R 中用于存储可变长度向量的自然数据类型。在下一步中,您将获得类似以下内容:
> matplot (matrix(1:100, nrow=10, ncol=10)[1], matrix(1:100, nrow=12, ncol=10))
Error in matplot(matrix(1:100, nrow = 10, ncol = 10)[, 1], matrix(1:100, :
'x' and 'y' must have same number of rows
像图或 matplot 这样的散点图需要完整的 x,y 元组,但在代码中,您只使用 x1 作为 x 值。您的代码示例不完整。您也在加载 x2,x3,...但只能使用它们来计算 XLIM。如果您不打算绘制它们,为什么要计算 xlim,包括所有 x 的最大值?
因此,我不清楚最终的图应该是什么样子,散点图是否是数据的正确可视化。您可能希望提供有关数据实际包含的内容以及如何处理不完整数据的更多详细信息。
可能是您想使用add=TRUE
将多个线图绘制成一个图形:
matplot(data1[,1:2], xlim = c(0,max_valuex), ylim = c(0,max_valuey))
matplot(data2[,1:2], add=TRUE)