这可能是一个愿望清单的事情,不确定(即可能需要为此创建geom_pie).今天我看到了一张地图(LINK),上面有饼图.

我不想讨论饼图的优点,这更多的是我可以在ggplot中做这个练习吗?
我提供了一个下面的数据集(从我的下拉框中加载),其中包含制作纽约州地图的地图数据和一些关于各县种族百分比的纯粹数据.我将这种种族构成作为与主数据集的合并以及作为单独的数据集称为密钥.我也认为布莱恩古德里奇在关于居中县名的另一篇文章(HERE)中对我的回应将有助于这个概念.
我们如何用ggplot2制作上面的地图?
数据集和没有饼图的地图:
load(url("http://dl.dropbox.com/u/61803503/nycounty.RData"))
head(ny); head(key) #view the data set from my drop box
library(ggplot2)
ggplot(ny, aes(long, lat, group=group)) + geom_polygon(colour='black', fill=NA)
# Now how can we plot a pie chart of race on each county
# (sizing of the pie would also be controllable via a size
# parameter like other `geom_` functions).
Run Code Online (Sandbox Code Playgroud)
提前感谢您的想法.
编辑:我刚看到junkcharts的另一个案例,它尖叫着这种类型的能力:

注意:这个问题是专门用于映射的,但是当我在标准的笛卡尔坐标系中绘图时,我希望能够使用它.
我喜欢基本图形,但也喜欢ggplot2.用于微调图形的我最常用的基本函数之一是locator(n),但这会在ggplot2中产生错误.
library(ggplot2)
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
ggplot(ny, aes(long, lat, group=group)) + geom_polygon(colour='black', fill=NA)
locator(1)
Run Code Online (Sandbox Code Playgroud)
现在,grid.locator()作为talkstats.com向我指出的达诚(这里),可以返回一些东西.我只是不知道如何使用那些东西来获得地图坐标.
> grid.locator()
$x
[1] 286native
$y
[1] 133native
Run Code Online (Sandbox Code Playgroud)
单位似乎没有帮助,因为它们不是地图坐标.也许我需要某种转换.
先感谢您.
编辑:(基于DWin的回复)
Dwin有正确的想法,但转换因素有点偏.对此的帮助将不胜感激.在下面的示例中,我在坐标处有一个红点(x = -73&y = 40.855).我把Dwin的响应扔进了一个函数来返回坐标.我希望结果是我输入的坐标,但它们不是.
想法?
require(maps); library(ggplot2); require(grid)
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
NY <- ggplot(ny, aes(long, …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用ggplot2和地图来绘制纽约州的县名.我的方法是通过县找到纬度和经度的方法(我假设这是县的中心,但这可能是错误的思考),然后使用geom_text在地图上绘制名称.它没有像我预期的那样表现,因为它每个县都在绘制多个名字.
我正在寻找的结果是每个文本(县)的中心位于其各自县的中心.
除了解决这个问题,我还很高兴能帮助理解我对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 …Run Code Online (Sandbox Code Playgroud) 这是改进居中县名称 ggplot 和地图以及地图上 ggplot 居中名称的扩展。这不仅仅是一个理论问题,我在回答How merge certain states Together by group with one label in ggplot2 in R? 时遇到了这种特殊情况。。在这里,我发现有一个L形的“网格”通向多边形外部的中点位置。另请参阅 Henrik 的链接线程Calculate Centroid Within / INSIDE a SpatialPolygon。。
我想知道是否有办法强制标签进入多边形,以获得“更直观”的中点。“直观地”可能意味着“多边形内距离任何边界最远的点”(相关线程的答案建议使用一个函数来计算它,但这个函数似乎没有给出与rgeos::gCentroid我的示例中不同的结果)。
任何建议都应该是完全自动化的,理想情况下适用于任何(ir-)正多边形,并且也独立于坐标投影(即坐标纵横比不重要) 校正:理想情况下它应该取决于坐标投影,因为这可能会将文本移动到边框的尴尬位置。因此,理想的解决方案可能应该在绘制时计算标签位置。
非常相关的是https://gis.stackexchange.com/questions/29278/finding-point-in-country-furthest-from-boundary和https://mathoverflow.net/questions/161494/get-a-point- in-polygon-maximize-the-distance-from-borders,但我不知道如何在 R / grid / ggplot2 中实现这一点。
suppressMessages({library(ggh4x)
library(sf)
library(dplyr)
library(patchwork)
})
poly_foo <- data.frame(x = c(0:1, rep(2,4), rep(1.5,3), 0), y = c(rep(0,3), 1:3, 3:1, 1))
p <- …Run Code Online (Sandbox Code Playgroud) 我正在制作cholorpleth(我从这里开始学习项目).我曾经问过在地图上绘制文字(HERE).我现在正试图在同一张地图上绘制名字,但是它有分面但仍然收到错误:
Error in eval(expr, envir, enclos) : object 'group' not found
Run Code Online (Sandbox Code Playgroud)
我认为R恨我,而我是一个愚蠢的人,我 traceback长约5英里,所以这也不是一个帮助.如果你拿出geom_text 一切运行正常.
PS我知道新的geom_map并且一直在玩这个但是这是一个让我烦恼的单独问题.
预先感谢您的帮助.
#Load three data sets from my dropbox
load(url("http://dl.dropbox.com/u/61803503/Names/cholo.RData"))
#view head of the three data frames
lapply(list("map.data2"=map.data2, "ny"=ny, "centroids"=centroids), head)
####################################################################
# map.data2 contains the filling information (test scores) #
# ny contains the lat and long information for plotting boundaries #
# centroids contains the information for plotting labels #
####################################################################
#Load Necessary Libraries
library(ggplot2); library(maps); …Run Code Online (Sandbox Code Playgroud) 我正在尝试并且当前未能将文本注释添加到我在ggplot2中创建的等值区域地图中.我试图用它的名字标记每个多边形(一个地方政府区域).
在我继续之前,我知道在这里(非常好的)教程中已经提出了类似的问题.但是,我尝试了几种不成功的方法,并认为我可能偶然发现了一个不同的问题.我怀疑我的代码失败的原因之一是我试图注释geom_polygon(),而我见过的其他方法详细说明了如何注释geom_map对象.也就是说,我想不出为什么用geom_polygon这不可能.
我在下面提供了我的代码.您可以从这里下载我的数据.数据框包括我加入强化shapefile的数据.我尝试附加的标签位于"LGA_NAME11"列中.
## LOAD PACKAGES
require(ggplot2)
require(rgdal)
require(dplyr)
## SET GGPLOT THEME
theme_clean <- function(base_size = 12) {
require(grid)
theme_grey(base_size) %+replace%
theme(
axis.title = element_blank(),
axis.text = element_blank(),
panel.background = element_blank(),
panel.grid = element_blank(),
axis.ticks.length = unit(0,"cm"),
axis.ticks.margin = unit(0,"cm"),
panel.margin = unit(0,"lines"),
plot.margin = unit(c(0, 0, 0, 0), "lines"),
complete = TRUE
)}
## SET COLOUR PALETTES
palette1 <- c("#f2f0f7", "#dadaeb", "#bcbddc", "#9e9ac8", "#756bb1", "#54278f")
## SET LABEL NAMES
lgaNamesSydney <- aggregate(cbind(long, lat) ~ …Run Code Online (Sandbox Code Playgroud)