图例范围和颜色分布的 spplot 问题
spplot issue with legend range and colors distribution
我的绘图和图例中的正确颜色范围有问题。
这是我使用的代码:
data.ch4 <- read.csv2("v42_CH4_1970_TOT.txt",skip = 3,stringsAsFactors = FALSE, header = F)
num_data <- data.frame(data.matrix(data.ch4))
library(maptools)
library(lattice)
library(png)
#map loading
map1 <- readShapePoly("CNTR_2014_03M_SH/Data/CNTR_RG_03M_2014.shp")
coordinates(num_data) <- ~V2+V1
gridded(num_data) <- TRUE
#plotting
png(file="Map2.png",width=35,height=30,unit="cm", res=200, type = "cairo")
spplot(num_data["V3"], xlim=c(-5,35), ylim=c(35,70),
sp.layout = list("sp.polygons",map1),contour=F)
dev.off()
这是包含数据的文件:https://www.sendspace.com/file/hjtatp(压缩,因为它通常重 57 mb)
地图来自here(但地图有次要优先级,可以跳过)
这是没有任何比例修改的样子:
所以一切都是蓝色的。显然,从最小值到最大值,存在很大的距离。我想修理水垢,例如最后一个值将 "higher than x"。我试着这样做:
所以现在看起来好多了。我是这样做的:
#Fixed breakpoints (?)
at <- c(0e+0, 1.5e-5, 1.0e-4, 1.0e-3, 1.0e-2, 1.0e-1, 1.0e+0, 2.0e+0, 1.0e+1, 1.0e+2, 2.0e+2,5.0e+2)
spplot(num_data["V3"], xlim=c(-5,35), ylim=c(35,70),
sp.layout = list("sp.polygons",map1),
contour=F,
at=at) #right there
所以我手动添加了 at 值(但不是准确的比例)。一切看起来好多了但是..
如您所见,右侧的比例尺分布不均匀。我看不到任何蓝紫色,只有橙色和黄色。
地图上还有一些点是亮黄色的(德国地区),因为这里的数值最高,可惜比例尺上没有这种颜色。
可能是我做的不对。我不知道如何将比例设置为看起来不错。我想要这样的规模:
我通过添加实现了这一点:
spplot(num_data["V3"], xlim=c(-5,35), ylim=c(35,70),
sp.layout = list("sp.polygons",map1),
contour=F,at=at,
colorkey=list(at=seq(0, 400, 30)) #right there
)
但还是那句话,这只是假体重秤,是行不通的。
第二个快速问题:如何在散点图数据之上添加国家等高线?因为现在轮廓被彩色数据掩埋了:c
转换为因子的数据为图例提供了规则的间隔。您可以通过 colorkey = list(labels = list(at = ..., labels = ...))
更改标签及其位置。
[Edited; (I noticed that some values are over 500, sorry)]
## convert numeric to factor
num_data@data$cutV3 <- cut(num_data@data$V3, breaks = c(at, Inf)) # I modified the breaks
spplot(num_data["cutV3"], xlim=c(-5, 35), ylim=c(35, 70),
colorkey = list(height = 1, labels = list(at = seq(0.5, length(at) -0.5), labels = at)),
sp.layout = list("sp.polygons", map1, first = F), contour = F) # drawn after main plot
我的绘图和图例中的正确颜色范围有问题。
这是我使用的代码:
data.ch4 <- read.csv2("v42_CH4_1970_TOT.txt",skip = 3,stringsAsFactors = FALSE, header = F)
num_data <- data.frame(data.matrix(data.ch4))
library(maptools)
library(lattice)
library(png)
#map loading
map1 <- readShapePoly("CNTR_2014_03M_SH/Data/CNTR_RG_03M_2014.shp")
coordinates(num_data) <- ~V2+V1
gridded(num_data) <- TRUE
#plotting
png(file="Map2.png",width=35,height=30,unit="cm", res=200, type = "cairo")
spplot(num_data["V3"], xlim=c(-5,35), ylim=c(35,70),
sp.layout = list("sp.polygons",map1),contour=F)
dev.off()
这是包含数据的文件:https://www.sendspace.com/file/hjtatp(压缩,因为它通常重 57 mb)
地图来自here(但地图有次要优先级,可以跳过)
这是没有任何比例修改的样子:
所以一切都是蓝色的。显然,从最小值到最大值,存在很大的距离。我想修理水垢,例如最后一个值将 "higher than x"。我试着这样做:
所以现在看起来好多了。我是这样做的:
#Fixed breakpoints (?)
at <- c(0e+0, 1.5e-5, 1.0e-4, 1.0e-3, 1.0e-2, 1.0e-1, 1.0e+0, 2.0e+0, 1.0e+1, 1.0e+2, 2.0e+2,5.0e+2)
spplot(num_data["V3"], xlim=c(-5,35), ylim=c(35,70),
sp.layout = list("sp.polygons",map1),
contour=F,
at=at) #right there
所以我手动添加了 at 值(但不是准确的比例)。一切看起来好多了但是..
如您所见,右侧的比例尺分布不均匀。我看不到任何蓝紫色,只有橙色和黄色。
地图上还有一些点是亮黄色的(德国地区),因为这里的数值最高,可惜比例尺上没有这种颜色。
可能是我做的不对。我不知道如何将比例设置为看起来不错。我想要这样的规模:
我通过添加实现了这一点:
spplot(num_data["V3"], xlim=c(-5,35), ylim=c(35,70),
sp.layout = list("sp.polygons",map1),
contour=F,at=at,
colorkey=list(at=seq(0, 400, 30)) #right there
)
但还是那句话,这只是假体重秤,是行不通的。
第二个快速问题:如何在散点图数据之上添加国家等高线?因为现在轮廓被彩色数据掩埋了:c
转换为因子的数据为图例提供了规则的间隔。您可以通过 colorkey = list(labels = list(at = ..., labels = ...))
更改标签及其位置。
[Edited; (I noticed that some values are over 500, sorry)]
## convert numeric to factor
num_data@data$cutV3 <- cut(num_data@data$V3, breaks = c(at, Inf)) # I modified the breaks
spplot(num_data["cutV3"], xlim=c(-5, 35), ylim=c(35, 70),
colorkey = list(height = 1, labels = list(at = seq(0.5, length(at) -0.5), labels = at)),
sp.layout = list("sp.polygons", map1, first = F), contour = F) # drawn after main plot