首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每个多边形Choroplethr的多重值

每个多边形Choroplethr的多重值
EN

Stack Overflow用户
提问于 2017-11-15 11:33:27
回答 1查看 288关注 0票数 1

我有以下问题,不知道该如何进行:

我想做一个合唱热图,与德国风力发电厂的数据。因此,我使用一个形状文件,映射所有德国Zip代码(工作良好)。

第二个数据框架包含德国所有新安装的风力发电厂。我想说明的是,ZIP地区的装机容量是一段时间以来最高的。

当我尝试在包choroplethr中这样做时,我面临的问题是,在与发电厂的数据帧中,大约有1000000行,所以几个邮政编码重复(许多邮政编码包含一个以上的风力发电站……)。

因此,我得到以下错误消息:

代码语言:javascript
复制
anyDuplicated(self$user.df$region) == 0 is not TRUE

这是密码。它基于下面的示例:https://www.r-bloggers.com/case-study-mapping-german-zip-codes-in-r/

代码语言:javascript
复制
library(sf)
library(choroplethr)
library(dplyr)
library(ggplot2)
library(rgdal)
library(maptools)
library(gpclib)
library(readr)
library(R6)

ger_plz <- readOGR(dsn = ".", layer = "plz-5stellig")
ger_plz2 <- read_sf("...plz-5stellig.shp")

ger_plz@data$id <- rownames(ger_plz@data)
ger_plz.point <- fortify(ger_plz, region="id")
ger_plz.df <- inner_join(ger_plz.point,ger_plz@data, by="id")

BNETZAVZ <-read.csv2("WindPower DATA.csv", 
                      header = TRUE, sep = ";", dec = ",")
BNETZAVZ_k <- subset(BNETZAVZ, inst_leistung >= 100 & energietraeger >= "7" & energietraeger<="8" & stat_Relevanz=="1",
                     select=c(anlagenschl, plz, inst_leistung, spannungsebene, inbetriebnahme, ausserbetriebnahme, regelzone_name, energietraeger))
#BNETZAVZ_k$inbetriebnahme <- dmy_hms(as.character(BNETZAVZ$inbetriebnahme))
print(BNETZAVZ_k$plz)
# Datum funktioniert so::)
BNETZAVZ_k$inbetriebnahme <- as.Date(BNETZAVZ_k$inbetriebnahme, format = "%d.%m.%Y %H:%M:%S")
BNETZAVZ_k2000 <- subset(BNETZAVZ_k, inbetriebnahme >="2000-01-01")

# variable name 'region' is needed for choroplethr
ger_plz.df$region <- ger_plz.df$plz
#subclass choroplethr to make a class for your my need
GERPLZChoropleth <- R6Class("GERPLZChoropleth",
                            inherit = choroplethr:::Choropleth,
                            public = list(
                              initialize = function(user.df) {
                                super$initialize(ger_plz.df, user.df)
                              }
                            )
)
#choropleth needs these two columnames - 'region' and 'value'
colnames(BNETZAVZ_k2000) [1] <- "EEG-key"
colnames(BNETZAVZ_k2000) [2] <- "region"
colnames(BNETZAVZ_k2000)[3] <- "value"
BNA <- data.frame(BNETZAVZ_k2000$region, BNETZAVZ_k2000$value)
colnames(BNA) = c("region", "value")
#instantiate new class with data
c <- GERPLZChoropleth$new(BNA)

#错误消息显示在上面的.行中

代码语言:javascript
复制
 #plot the data
    c$ggplot_polygon = geom_polygon(aes(fill = value), color = NA)
    c$title = "Capacity Windkraft BNETZA"
    c$legend= "Capacity per Zipcode"
    c$set_num_colors(9)
    c$render()
EN

回答 1

Stack Overflow用户

发布于 2018-02-25 19:36:10

我是“合唱团”的作者,不幸的是,我很难理解你的问题。但是,我认为你问题的关键部分是:

我想说明的是,ZIP地区的装机容量是一段时间以来最高的。

我不知道“一段时间内最高的安装容量”到底意味着什么,也不知道这个值是如何从你拥有的数据中得到的。

但是,choroplethr要求您的数据采用非常特殊的格式:

  1. 包含一个名为region的列和一个名为value的列的dataframe。
  2. region中的每个值都应该与您的shapefile中的一个区域匹配。

在幕后,choroplethr将您的数据与shapefile合并。如果数据包含重复区域,则无法进行合并,因为要使用的值不明确。

读了你的问题,我不太清楚你的情况。但是,我认为很可能您希望处理数据,以便每个区域出现一次,并且值是您所讨论的两个文件的一些函数。

但是,为了完整起见,我要提到的是,您至少有可能尝试创建一个双变量合唱。Choroplethr目前没有这个功能。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47306331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档