簡體   English   中英

R中的plotrix中的float.pie

[英]floating.pie in plotrix in R

我正在使用R。我的最終目標是在縣一級獲得明尼蘇達州的GIS地圖,並且在每個縣中都將有一個餅圖,代表所雇用的小學,中學和高等教育人員的比例。

我有一個包含就業統計數據的數據框。 每行是一個縣,各列是第一,第二和第三部門的就業情況。 前十行看起來像這樣。

      [,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 shapefile,但您不必為此擔心)

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函數(不包括零,因為它們破壞了一些內部計算;應該可以解決此問題)或向軟件包維護者發送請求...

一個簡單的技巧是為所有類別添加一個較小的值(足夠小以至於您永遠不會在視覺上注意到差異); 或者,您可以只使用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包...
  • 您可能想看看這個答案 ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM