2

我有洛杉矶港地区的颗粒物浓度差异(之后 - 之前)。我正在尝试使用 ggmap 在地图上绘制浓度等高线,但结果看起来很不同。我使用的代码如下所示(数据在代码下方):

代码

install.packages('ggmap')

library(ggmap)

PM = read.csv('data.csv', stringsAsFactors = FALSE)

获取经度和纬度

geocode("Port of Los Angeles") # Not centered
geocode("Compton, CA") # Now centered

使用康普顿 LON 和 LAT

POLA = c(lon = -118.220071, lat =  33.895849)
POLA.map = get_map(location = POLA, zoom = 10, color = 'bw')
ggmap(POLA.map) + geom_point(data = PM, mapping = aes(Longitude, Latitude)) + 
        stat_density2d(data = PM, mapping = aes(x = Longitude, y = Latitude, fill=..level..), geom = "polygon", alpha = 0.3, contour = TRUE)

但是,等高线图应该有这样的模式:

https://drive.google.com/file/d/0B3XVjcsci0y3VDBTc01PYkhOckE/view?usp=sharing

ggplot(PM, aes(UTM.X, UTM.Y)) + geom_tile(aes(fill = Value), alpha = 0.8, color = "black") + 
        scale_fill_gradient(low = 'green', high = 'red')

数据:Col-1:经度,Col-2:纬度,Col-3:UTM-X,Col-4:UTM-Y,Col-5:值

UTM 坐标单位:米,UTM 区域 = 11 N,基准 = WGS84。数据可在此处获得:https ://drive.google.com/file/d/0B3XVjcsci0y3LUpudko1S2c1cnc/view?usp=sharing

4

1 回答 1

2

stat_density2d用于绘制密度图,例如点多的深色和少点的浅色。您有一个带有Value属性的常规网格,而不是密度图。

因此,您应该使用geom_tile来获取常规网格图。但是您的经纬度坐标不会形成轴对齐的网格。尝试这个:

ggplot(data = PM, mapping = aes(x = Longitude, y = Latitude, fill=Value)) + geom_tile()

你得到一个空白的情节,试试这个:

ggplot(data = PM, mapping = aes(x = UTM.X, y = UTM.Y, fill=Value)) + geom_tile()

你得到你的情节。当然,它与ggmap背景不在同一个坐标系中。

您可能可以使用 base R 的contourLines函数来获取 UTM 坐标中轮廓线的坐标,制作 a SpatialLinesDataFrame,然后转换为 Lat-long 并添加到 a ggmap

获得看起来像网格图的另一种可能性是使用带有正方形的点作为形状。

ggmap(POLA.map)  + geom_point(data = PM, mapping = aes(Longitude, Latitude, colour=Value), size=4, alpha=0.5, shape=15) + scale_colour_gradient(low = 'green', high = 'red')

假网格

有一些人工制品,其中网格单元格重叠,看起来有点像单元格轮廓,并且图例显示没有不透明度,因此看起来比单元格更饱和。您必须正确设置大小参数,因为它取决于图形设备的大小。

如果做不到这一切,请将您的数据转换为栅格包栅格对象,将其保存为 GeoTIFF,然后将其加载到 QGIS 中,QGIS 可以将 UTM 网格重新投影到 Lat-long 上。

QGIS 也有一些很好的混合模式,所以你可以很容易地做到这一点:

qgis中的栅格

注意这不是透明度,这是乘法混合。透明度会导致深色被洗掉,而乘法混合让黑色透过,因此标签和底图细节仍然可见。

另外,请注意栅格如何不与轴对齐(在底部尤其明显)。

于 2014-12-22T10:27:20.240 回答