5

私は現在、英国のシェープファイルを持っており、英国のさまざまな地域の種の個体数をプロットしています。これまでのところ、種の個体数の 3 つのレベルをプロットし、赤 = 高、オレンジ = 中、緑 = 低に色付けしました。しかし、私がやりたいことは、3 色だけで囲まれるのではなく、グラデーション プロットを作成することです。これまでのところ、列名として地域を持ち、その下に各地域の種の数を持つ Count というテーブルがあります。私の最小カウントは 0 で、最大は約 2500 で、Count の領域はシェープファイルの領域と一致します。自分で入力したレベルに基づいて、高、中、低を判断する機能があります

    High<-colnames(Count)[which(Count>'input value here')]

そして、これらは次のようにシェープファイルにプロットされます。

    plot(ukmap[(ukmap$Region %in% High),],col='red',add=T)

残念ながら、パッケージを実際にインストールすることはできません。colorRamp を使用することを考えていましたが、どうすればよいかわかりません。

編集:私のデータは次のようになります

      Wales   Midlands North Scotland South East South West
 1        551       32      124        1         49         28
 3         23       99      291      152        164        107
 4          1        7       17       11         21         14
 7        192       32       12        0          1          9
 9         98       97        5        1         21          0

最初の列は種を表す単なる数字であり、現在、英国のシェープファイルにカウントをプロットする関数がありますが、高、中、低の境界に基づいています。上記のデータはシェープファイルに添付されていません。次に、データ セットの行 (種) ごとにループし、行 (種) ごとに新しいマップをプロットします。

4

3 に答える 3

4

OK、これは使用しない代替ソリューションですggplot(参照用にソリューションを残しておきggplotます)。このコードは単純ですが、独自のデータにどのように適応させるかについてのアイデアを得るには十分です。

# UK shapefile found via http://www.gadm.org/download
uk.url <- "http://www.filefactory.com/file/s3dz3jt3vr/n/GBR_adm_zip"

# replace following with your working directory - no trailing slash
work.dir <- "C:/Temp/r.temp/gb_map"

# the full file path for storing file
file.loc <- paste0(work.dir, "/uk.zip")

download.file (uk.url, destfile = file.loc, mode = "wb")
unzip(file.loc, exdir = work.dir)

# open the shapefile
require(rgdal)
uk <- readOGR(work.dir, layer = "GBR_adm2")

# make some fake data to plot
uk@data$count <- round(runif(nrow(uk@data), 0, 2500), 0)
uk@data$count <- as.numeric(uk@data$count)

# and plot it
plot(uk, col = gray(uk@data$count/2500))

コードの結果は次のプロットです。

スクリーンショット

凡例を含める要求に続いて編集し、コードを少し調整しましたが、正直legendなところ、製品品質のものを取得するのに十分なほどベースRの機能を理解しておらず、それ以上調査したくありません. (ちなみに、アイデアについては、この質問に帽子をかぶってください。)コードの下のプロットを見ると、凡例の色などを並べ替える必要があることが示唆されていますが、演習として元のポスターに任せるか、別の質問として投稿します。

# UK shapefile found via http://www.gadm.org/download
uk.url <- "http://www.filefactory.com/file/s3dz3jt3vr/n/GBR_adm_zip"

# replace following with your working directory - no trailing slash
work.dir <- "C:/Temp/r.temp/gb_map"

# the full file path for storing file
file.loc <- paste0(work.dir, "/uk.zip")

download.file (uk.url, destfile = file.loc, mode = "wb")
unzip(file.loc, exdir = work.dir)

# open the shapefile
require(rgdal)
uk <- readOGR(work.dir, layer = "GBR_adm2")

# make some fake data to plot
uk@data$count <- as.numeric(round(runif(nrow(uk@data), 0, 2500), 0))
uk@data$bin <- cut(uk@data$count, seq(0, 2500, by = 250), 
      include.lowest = TRUE, dig.lab = 4)

# labels for the legend
lev = levels(uk@data$bin)
lev2 <- gsub("\\,", " to ", lev)
lev3 <- gsub("\\]$", "", lev2)
lev4 <- gsub("\\(|\\)", " ", lev3)
lev5 <- gsub("^\\[", " ", lev4)
my.levels <- lev5

# Create a function to generate a continuous color palette
rbPal <- colorRampPalette(c('red','blue'))
uk@data$Col <- rbPal(10)[as.numeric(cut(uk@data$count, seq(0, 2500, by = 250)))]

# Plot
plot(uk, col = uk@data$Col)
legend("topleft", fill = uk@data$Col, legend = my.levels, col = uk@data$Col)

スクリーンショット

于 2013-08-05T12:25:02.057 に答える
1

colorRampPalette を試しましたか?

グラデーションパレットを作成する方法は次のとおりです

       gradient_color <- colorRampPalette(c("blue", "red"))
       gradient_color(10)

[1] "#0000FF" "#1C00E2" "#3800C6" "#5500AA" "#71008D" "#8D0071" "#AA0055" [8] "#C60038" "#E2001C" "#FF0000"

プロットの例

     plot(rep(1,10),col=gradient_color(10))
于 2013-08-02T13:59:06.837 に答える