【问题标题】:Mapping spatial Distributions in R在 R 中映射空间分布
【发布时间】:2013-04-06 16:11:48
【问题描述】:

我的数据集包括 17 个站点,每个站点都有 24 小时的温度值。 我想在每个小时内映射每个站点的值,并且在所有时间都这样做。 我想要做的是类似于图像的东西。

数据格式如下:

     N2     N3     N4    N5     N7     N8    N10    N12   N13    N14   N17   N19    N25    N28   N29    N31    N32
1 1.300 -0.170 -0.344 2.138  0.684  0.656  0.882  0.684 1.822  1.214 2.046 2.432  0.208  0.312 0.530  0.358  0.264
2 0.888 -0.534 -0.684 1.442 -0.178 -0.060  0.430 -0.148 1.420  0.286 1.444 2.138 -0.264 -0.042 0.398 -0.196 -0.148
3 0.792 -0.564 -0.622 0.998 -0.320  1.858 -0.036 -0.118 1.476  0.110 0.964 2.048 -0.480 -0.434 0.040 -0.538 -0.322
4 0.324 -1.022 -1.128 1.380 -0.792  1.042 -0.054 -0.158 1.518 -0.102 1.354 2.386 -0.708 -0.510 0.258 -0.696 -0.566
5 0.650 -0.774 -0.982 1.124 -0.540  3.200 -0.052 -0.258 1.452  0.028 1.022 2.110 -0.714 -0.646 0.266 -0.768 -0.532
6 0.670 -0.660 -0.844 1.248 -0.550  2.868 -0.098 -0.240 1.380 -0.012 1.164 2.324 -0.498 -0.474 0.860 -0.588 -0.324
  MeteoSwiss
1       -0.6
2       -1.2
3       -1.0
4       -0.8
5       -0.4
6       -0.2

其中 N2、N3、...m MeteoSwiss 是气象站,每行显示该站每小时的温度值。

id  Longitude   Latitude
2   7.1735          45.86880001
3   7.17254         45.86887001
4   7.171636    45.86923601
5   7.18018         45.87158001
7   7.177229    45.86923001
8   7.17524         45.86808001
10  7.179299    45.87020001
12  7.175189    45.86974001
13  7.179379    45.87081001
14  7.175509    45.86932001
17  7.18099  45.87262001
19  7.18122  45.87355001
25  7.15497  45.87058001
28  7.153399 45.86954001
29  7.152649 45.86992001
31  7.154419 45.87004001
32  7.156099 45.86983001
MeteoSwiss  7.184    45.896

【问题讨论】:

  • 第一个任务是将您的数据转换为长格式,然后合并适当“id”的纬度和经度值。然后,lattice xyplot 或 ggplot2 绘图函数之一很容易为您提供多面板输出。您可以等待某人构造 R 数据对象,但将这些屏幕输出版本替换为 dput() 版本会更有意义。

标签: r map distribution spatial


【解决方案1】:

我定义了一个或多或少类似于您的数据的玩具示例:

vals <- matrix(rnorm(24*17), nrow=24)
cds <- data.frame(id=paste0('N', 1:17),
                  Longitude=rnorm(n=17, mean=7.1),
                  Latitude=rnorm(n=17, mean=45.8))
vals <- as.data.frame(t(vals))
names(vals) <- paste0('H', 1:24)

sp 包定义了几个类和方法来存储和 显示空间数据。对于您的示例,您应该使用 SpatialPointsDataFrame类:

library(sp)

mySP <- SpatialPointsDataFrame(coords=cds[,-1], data=data.frame(vals))

以及显示信息的spplot方法:

spplot(mySP, as.table=TRUE,
       col.regions=bpy.colors(10),
       alpha=0.8, edge.col='black')

此外,您可能会发现 spacetime 包很有用 (paper at JSS)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-08
    • 1970-01-01
    相关资源
    最近更新 更多