我正在嘗試使用ggplot2和地圖來繪製紐約州的縣名。我的方法是找到縣的經緯度方法(我認爲這是縣的中心,但這可能是錯誤的想法),然後使用geom_text來繪製地圖上的名稱。這並不像我預計的那樣,因爲它正在繪製每縣的多個名字。ggplot居中在地圖上的名字
我要找的結果是每個文本(縣)的中心位於各自縣的中心。
除了解決這個問題,我很希望幫助理解我的想法與ggplot有什麼問題。
預先感謝您。
library(ggplot2); library(maps)
county_df <- map_data('county') #mappings of counties by state
ny <- subset(county_df, region=="new york") #subset just for NYS
ny$county <- ny$subregion
cnames <- aggregate(cbind(long, lat) ~ subregion, data=ny, FUN=mean)
p <- ggplot(ny, aes(long, lat, group=group)) + geom_polygon(colour='black', fill=NA)
p #p of course plots as expected
#now add some county names (3 wrong attempts)
p + geom_text(aes(long, lat, data = cnames, label = subregion, size=.5)) #not correct
#I said maybe I'm confusing it with the same names for different data sets
names(cnames) <-c('sr', 'Lo', 'La')
p + geom_text(Lo, La, data = cnames, label = sr, aes(size=.5)) #attempt 2
p + geom_text(aes(Lo, La, data = cnames, label = sr, size=.5)) #attempt 3
我想你已經做了我所問及的更多。所以我把這個線索標記爲已解決。謝謝。我對名稱的位置仍然不滿意,現在意識到我需要一種更好的對中方法。賈斯汀的方法看起來很有趣。我將在一些改進的定心技術上發佈另一個問題。 – 2012-02-25 05:37:35
中點更好的是地圈包中的質心函數。下面是我做的,而不是在這個答案中的聚合函數: 'cnames < - ddply(ia_pop,。(縣,組),總結,質心=質心(cbind(long,lat)))' ,然後像這樣拆分出Centroid列: 'cnames $ long < - cnames $ Centroid [,1]' 和 'cnames $ lat < - cnames $ Centroid [,2]' – Danny 2018-03-02 19:20:42