2017-06-13 7 views
-1

私は現在、漁業データをプロットしており、ggplotの沿岸シェイプファイル上の海にあるさまざまな地方のポリゴンシェイプファイルを別々にプロットしています。また、私はパイのプロットを作成しました。そこでは、海のプロットを使ってadd.pie(mapplotsパッケージ)でパイを追加しました。Rの同じプロットで、パイとポリゴンをシェイプファイルからプロットする方法はありますか?

私は両方を組み合わせる方法を模索しているので、最終的には沿岸のシェイプファイルがあり、シェイプファイルとパイが上にあります。どのように私はこれを行うことができます誰も任意のアイデアを持っていますか?

ありがとうございました!

更新:plotGoogleMapsパッケージを使ってパイをプロットすると、理想的な解決策となるシェイプファイルとしてエクスポートされますが、最後にプロットしようとすると何も表示されません。 ...私はコードをつけています、多分あなたの経験は、私が間違ったことを知っているでしょうか?もう一度ありがとう:)

library(sp) 
library(plotGoogleMaps) 

data<-read.csv("cdis5014_all9sp.csv") 
# transform the data then change into large spdf 
names(data)[1]<-c("Species") 

TotalCatch15 <- aggregate(data$Catch_t, list(data$Species,data$YearC, data$xLon5ctoid, data$yLat5ctoid), sum) # per species, per gear, per year, per cell 
names(TotalCatch15)<-c("Species", "Year", "Long", "Lat", "tCatch") 

# now subset only years 2000-2014 
?subset 
last15yrs <- subset(TotalCatch15, Year %in% 2000:2014) 

# now average it 
AvgCatch15 <- aggregate(last15yrs$tCatch, list(last15yrs$Species, last15yrs$Long, last15yrs$Lat), mean) # per species, per cell! 
names(AvgCatch15)<-c("Species", "Long", "Lat", "tCatch") 

AvgCatch15$Species 

# now try to transform it to make these pies? 
# if needed AvgCatch15$Species <- as.character (AvgCatch15$Species) 
?spread 
pieready <- spread(AvgCatch15, Species, tCatch, fill=0) 
summary(pieready) 

coordinates(pieready)<-~Long+Lat 
proj4string(pieready) <- CRS('+init=epsg:4326') #epsg can also be 32662? 
piereadyshp <- spTransform(pieready, CRS("+proj=longlat +datum=WGS84")) 
summary(piereadyshp) 
?spTransform 

#using plotGoogleMaps::pieSP to generate the spatial data.frame for pie-chart 
?pieSP 
pies1 <- pieSP(pieready, zcol= c("ALB", "BET", "BFT", "BUM", "SAI", "SKJ", "SWO", "WHM", "YFT"), max.radius=500) 
pies1$pie=rep(c("ALB", "BET", "BFT", "BUM", "SAI", "SKJ", "SWO", "WHM", "YFT"),345) 

# Extract spatial polygon data.frame 

library(broom) 
library(ggplot2) 

names([email protected])<-pies1$pie 
pi1<-tidy(pies1) 

ggplot() + 
    geom_polygon(data=pi1, aes(x=long, y=lat, group=id, fill=.id)) 

これはggplotが何も表示されない場所です。何かについてのより多くの情報が必要な場合は、私はそれを更新することができます。

+0

私がそうするように簡単な解決策に遭遇していないと思います。これまではplotGoogleMapsパッケージを使って円グラフをプロットし、それを空間ポリゴンに変換してからggmapに統合しました。あなたに例を示すことを試みることができました(しかし、説明するのに時間がかかる)。 [this](https://gis.stackexchange.com/questions/214810/pie-charts-on-gis-maps-using-r)を参照することもできます –

+2

Welcome to Stackoverflow! [ヘルプページ](http://stackoverflow.com/help)、特に[ここではどのトピックを聞くことができますか?](http://stackoverflow.com/help/)のセクションを読んでください。 on-topic)と[[どのような種類の質問を避けるべきですか?]](http://stackoverflow.com/help/dont-ask)を参照してください。また、[ツアー](http://stackoverflow.com/tour)をご覧になり、[良い質問をする方法](http://stackoverflow.com/help/how-to-ask)を読んでください。最後に、[最小限の完全で検証可能な例](http://stackoverflow.com/help/mcve)の作成方法を学んでください。 – Markus

+0

どのようなタイプの漁業データを円グラフで表現したいですか?キャッチ・ツー・エフォート・ユニット?種の組成? – ccapizzano

答えて

0

円グラフを空間ポリゴンとして取得する方法は次のとおりです。うまくいけば、ggmapであなたのSHPファイルと一緒にこれを統合することができます:

library(sp) 
library(plotGoogleMaps) 
data(meuse) 
coordinates(meuse)<-~x+y 
proj4string(meuse) <- CRS('+init=epsg:28992') 
df <- spTransform(meuse, CRS("+proj=longlat +datum=WGS84")) 

#using plotGoogleMaps::pieSP to generate the spatial data.frame for pie-chart 
pies <- pieSP(df,zcol=c('zinc','lead','copper'), max.radius=50) 
pies$pie=rep(c('zinc','lead','copper'),155) 

# m=plotGoogleMaps(pies, zcol='pie') #run this to show the java-based output of piechart on map 

#Extract spatial polygon data.frame 

library(broom) 
library(ggplot2) 

names([email protected])<-pies$pie 
pi<-tidy(pies) 

ggplot() + 
    geom_polygon(data=pi, aes(x=long, y=lat, group=id, fill=.id)) 

enter image description here

+0

ありがとう!これはそれがトリックを行うように、私は明日それを試してみると、それがどうなるか見る:) –

関連する問題