如何在R中使用plot函数绘制矩阵多列数据并自定义坐标轴
代码问题排查与修正
你的代码存在3处核心错误:
- 调用
plot()时参数逻辑错误,第一个参数不应该直接传入整个samplesizes数据框,且X/Y轴的标签与你要求的「X轴为效应量、Y轴为样本量」需求完全相反 - 绘图循环中使用了未定义的变量
s和effectsizes,你的实际数据中效应量序列是d,对应样本量存储在samplesizes的各列中 lines()函数的参数顺序与数据索引逻辑不匹配
完整可运行代码
d <- seq(from = 0.3, to = 0.5, by = 0.01) nd <- length(d) p <- seq(from = 0.6, to = 0.8, by = 0.1) np <- length(p) samplesizes <- data.frame(matrix(data=0, nrow=nd, ncol=np)) names(samplesizes) <- p rownames(samplesizes) <- d for (i in 1:np){ for (j in 1:nd){ result <- power.t.test(n=NULL, d = d[j], sig.level = .05, power = p[i], alternative = "one.sided") samplesizes[j,i] <- result$n } } #----------------------------------------------------- xrange <- range(d) yrange <- round(range(samplesizes)) colors <- rainbow(length(p)) # 绘制空画布 plot(xrange, yrange, type="n", xlab="效应量 (d)", ylab="样本量 (n)", las = 1) # 绘制不同检验效能对应的曲线 for (i in 1:np){ lines(d, samplesizes[,i], lwd=2, col=colors[i]) } legend("topright", title="检验效能", as.character(p), fill=colors)
运行上述代码即可得到和参考示例效果一致的可视化结果,效应量为横轴、样本量为纵轴,不同颜色曲线对应不同的检验效能水平。
内容的提问来源于stack exchange,提问作者rayner perdana
相关产品推荐
相关产品推荐

