2016-12-04 25 views
1

プロットや凡例に正しい色の範囲に問題があります。凡例の範囲と配色でのspplotの問題

これは私が使用するコードである:https://www.sendspace.com/file/hjtatp(通常はそれウェイト57メガバイトbeacuse圧縮)

hereからマップ(しかしマップは、二次優先され、その:ここ

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() 

データのファイルでありますスキップすることができます)

これは、任意のスケール変更せずにどのように見えるかです: enter image description here

すべてが青です。明らかに、最小値から最大値までの大きなスケール距離があります。私はスケールを修正したいと思います。最後の値は「xより大きい」でしょう。私はこのようにこれを実行しようとした:

enter image description here

だから今、これは非常に良く見えます。これは私がそれを行った方法です:

#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 

私は手動で(正確な縮尺ではなく)値を追加しました。すべてがもっとよく見えますが、

右から見ると、均一な分布ではありません。私は青紫色、オレンジ色と黄色だけを見ることはできません。

また、ここでは値が最も高いので、地図上のいくつかのスポットは明るい黄色(ドイツ地域)ですが、悲しいことに、そのような色はスケールにはありません。

おそらく私はそれを正しくしなかったでしょう。私はスケールを良く見えるように設定する方法を知らない。私は追加することによって、これを達成

enter image description here

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 
      ) 

をしかし、再び、これはそれが動作しません、ちょうど偽の規模である私は、このような規模を持っていると思います。

また、2番目に速い疑問:spplottedデータの上に国の輪郭を追加する方法は?今では輪郭がカラフルなデータの下に埋め込まれているので、:

答えて

3

データに変換されたデータは、凡例に一定の間隔を与えます。 colorkey = list(labels = list(at = ..., labels = ...))によってラベルとその位置を変更することができます。

[Edited; (I noticed that some values are over 500, sorry)] 

## convert numeric to factor 
[email protected]$cutV3 <- cut([email protected]$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 

enter image description here

+0

すごいです!これはまさに私が必要としていたものです!ありがとうございました:) – Karmel

+0

もう一つ、濃い青色から黄色から赤色(青 - 黄 - 赤)までのスケールの色を作ることは可能ですか?私はレインボースキーマについて考えていましたが、私は緑色 - 赤色または青色 - ピンク - 赤色のみを使用できます – Karmel

+1

@Karmel; 'spplot(...、col.regions = colorRampPalette(c(" blue "、" yellow "、" red "))、...)'はあなたが望むものです。 – cuttlefish44