1

私は R を使用しています。最終的な目的は、郡レベルでミネソタ州の GIS マップを作成することです。各郡には、初等教育、中等教育、高等教育の従業員の割合を表す円グラフが表示されます。

雇用統計を含むデータフレームがあります。各行は郡で、列は第 1、第 2、および第 3 セクターの雇用です。最初の 10 行は次のようになります。

      [,1]   [,2]   [,3]
 [1,]    0     94   2208
 [2,]    0  45568  65678
 [3,]    0   3124   6262
 [4,]   48   3908  11278
 [5,]    0   6949   9779
 [6,]    0    283    992
 [7,]    0   7797  27130
 [8,]   15   4471   6710
 [9,]   51   1973   5768
[10,]   44  14188  23040

円グラフを表示するには、パッケージfloating.pieの関数を使用して、すべての郡を反復処理します。plotrix(mn_countyは私の GIS シェープファイルですが、気にする必要はありません)

floating.pie(coordinates(mn_county)[s, ][1], coordinates(mn_county)[s, ][2], c(pri, sec,tert), radius = rad
           , col = c(rgb(255, 0, 0, max = 255, alpha = 125, names = "red50"), rgb(0, 255, 0, max = 255, alpha = 125, names = "green50"), rgb(0, 0, 255, max = 255, alpha = 125, names = "blue50")))

円グラフでは、一次雇用を赤、二次雇用を緑、三次雇用を青にします。問題は、一次雇用 = 0 の場合、R は二次雇用を赤で、三次雇用を緑でシェーディングすることです。どうすればこれを防ぐことができますか?

4

1 に答える 1

2

原則として、floating.pie関数を自分でハックするか (ゼロは内部計算の一部を壊すため除外されます。これを回避できるはずです)、パッケージのメンテナーにリクエストを送信できます ...

簡単なハックは、すべてのカテゴリに小さな値を追加することです (視覚的に違いに気付かないほど小さい値です)。または、単に使用することもできますmin(pri,eps)...

dat <- data.frame(pri=c(0,10,20),
                  sec=c(10,20,30),
                  tert=c(10,10,10))
n <- 3
library(plotrix)
plot(c(0,n+1),c(0,n+1),axes=FALSE,ann=FALSE,type="n")
eps <- 0.001
for (i in 1:n) {
    with(dat[i,],floating.pie(i,i,c(pri+eps,sec+eps,tert+eps),
                              col=c("red","green","blue"),radius=0.5))
}

ここに画像の説明を入力

その他の一方的なアドバイス:

  • 赤/緑/青は可能な限り最良の色表現ではありません (原色の赤/緑は二色性に区別できません)、RColorBrewerパッケージを見ることができます...
  • あなたはこの答えを見たいと思うかもしれません...
于 2016-10-20T19:15:09.903 に答える