R中的制图 - 如何在地图上绘制数字和二进制值?

时间:2015-06-10 14:45:20

标签: r dictionary ggplot2 cartography

我目前正在尝试制作两张地图,一张有多个分类值,另一张有连续数值,如下所示:

link

我有一个数据集,为每个NPA提供NPA和两个信息:项目(类别)和频率(从1到10的比例):

NPA     item           Frequency
1000    huitante        0
1002    huitante        10
1006    quatre-vingt    3
2000    huitante        9

我还有一个特定的shapefile用于我所在的国家(瑞士)。在之前的post上,我发现了一些有趣的代码,我在这里复制/粘贴:

# open the shapefile
require(rgdal)
require(rgeos)
require(ggplot2)
ch <- readOGR(work.dir, layer = "PLZO_PLZ")

# convert to data frame for plotting with ggplot - takes a while
ch.df <- fortify(ch)

# generate fake data and add to data frame
ch.df$count <- round(runif(nrow(ch.df), 0, 100), 0)

# plot with ggplot
ggplot(ch.df, aes(x = long, y = lat, group = group, fill = count)) +
geom_polygon(colour = "black", size = 0.3, aes(group = group)) +
theme()

作者在评论中提供了一些信息来绘制特定数据集(而不是假数据):

# plot just a subset of NPAs using ggplot
my.sub <- ch.df[ch.df$id %in% c(4,6), ]
ggplot(my.sub, aes(x = long, y = lat, group = group, fill = count)) +
geom_polygon(colour = "black", size = 0.3, aes(group = group)) +
theme()

在帖子的评论中说:

  

替换ggplot(my.sub,aes(x = long,y = lat,group = group,fill = count))   与ggplot(my.sub,aes(x = long,y = lat,group = group,fill = frequency))

所以我想我需要将频率提取为变量

frequency <- table(data$frequency)

并更改引号中显示的代码。

不幸的是,我的问题是它不起作用,我得到以下评论:

  

不知道如何自动选择类型表对象的比例。   违约持续   错误:美学必须是长度1或与长度相同   dataProblems:频率

我的问题是:

  • 如何更改代码以包含我自己的数据,并绘制数值(频率)
  • 如何更改代码以包含我自己的数据,并绘制分类值(项目)

我不需要在同一张地图上表示频率和项目,只知道如何创建分离的地图。

我的数据集在此文件中,还有我需要使用的shapefile。

https://www.dropbox.com/sh/5x6r6s2obfztblm/AAAesIOrxn76HU57AIF0y1Oua?dl=0

任何帮助都将非常感谢!

0 个答案:

没有答案