1

我正在使用 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了 package 函数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 将次要就业用红色表示,将第三次就业用绿色表示。我怎样才能防止这种情况发生?

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 回答