2016-10-20 14 views
1

私はRを使用しています。究極の目的は、ミネソタ州のGISマップを郡レベルに持つことです。各郡では、プライマリ、第二、第三の人々が雇用されています。floating.pie in plotrix in R

私は就業統計を含むデータフレームを持っています。各列は郡であり、列は第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 

円グラフを置くために、私はplotrixパッケージのfloating.pie機能を使用すると、すべての郡を反復処理。青いする(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は第二次雇用を赤および第三次雇用として緑色にすることである。これを防ぐ方法を教えてください。あなたはfloating.pie機能を自分でハック可能性が原則

答えて

2

(彼らは内部計算の一部を壊すので、ゼロが除外され、この問題を回避することが可能なはずである)、またはパッケージメンテナに要求を送信...

簡単なハックは、すべてのカテゴリに小さな値を追加することです(視覚的に違いを感じることはありません)。

  • 赤/緑/青(プライマリー赤/緑可能な限り最高の色表現ではありませんされています。その代わりに、あなただけの他の迷惑なアドバイスが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)) 
    } 
    

    enter image description here

    を使用することができます二クロム酸塩と区別できない場合)、RColorBrewerパッケージをご覧ください。

  • this answer ...