首页 > 解决方案 > 如何使用 R 创建一个包含 1000 行数据的散点图,由一个变量索引/绘制?

问题描述

我有一个包含 1000 行和 100 列的数据集,数字从左到右从小到大排列(这些都是日期或发生某事的年份)。我想创建这个数字数据的散点图,每一行都针对数字 1-100 的序数索引按升序绘制。因此,例如数据框是:

       [1] [2] [3] [4] ... [100]
   [1] 202 216 398 401 ... 2000
   [2] 203 243 284 350 ... 1998
   [3] 211 269 299 321 ... 2000
  ...
[1000] 200 247 273 300 ... 1999

我想用 1-100 索引每一行中的每个点,所以基本上用数字 1-100 绘制所有行。是否有捷径可寻?我是 R 中的新手和自学成才。我用 ggplot 尝试过,我也尝试将数据框转换为矩阵并使用 matplot,但不能完全正确。我正在拍摄 y 轴上的数字 1-100,以及 x 上的数字 1-2000。

这是我试图复制的图表示例,它是我在 Excel 中创建的(只有 250 个系列)。

这里是

我知道这将是一个非常混乱的图表,但我正在复制其他人的基于代理的模型,并希望将我的图表和结果与他们发布的数据进行比较。

标签: rggplot2scatter-plot

解决方案


R 几乎总是考虑列中的数据,而不是行中的数据,因为ggplot您需要长格式而不是宽格式数据。

让我们获取一些示例输入:

nr = 1000
nc = 100
set.seed(47)
m = matrix(sample(1:2000, size = nr * nc, replace = TRUE), ncol = nc)

# base
plot(x = c(1,2000), y = c(1,100), type = "n")
for(i in 1:nr) points(m[i, ], 1:100, cex = 0.1, pch = 20)

# ggplot
# get data in long format
d = data.frame(x = c(t(m)), y = rep(1:100, nr))
ggplot(d, aes(x = x, y = y)) +
  geom_point(shape = '.', alpha = 0.1)

这些看起来都很糟糕,因为假数据只是均匀分布的,但它应该给你正确的想法。


推荐阅读