我对R中的数据处理有疑问。我有两个数据集。两者都是最初的.csv文件。我准备了两个示例数据集:
表A-人员
http://pastebin.com/HbaeqACi
表B-城市
http://pastebin.com/Fyj66ahq
为了使其工作尽可能少,相应的R代码用于加载和可视化。
# Read csv files
# check pastebin links and save content to persons.csv and city.csv.
persons_dataframe = read.csv("persons.csv", header = TRUE)
city_dataframe = read.csv("city.csv", header = TRUE)
# plot them on a map
# load used packages
library(RgoogleMaps)
library(ggplot2)
library(ggmap)
library(sp)
persons_ggplot2 <- persons_dataframe
city_ggplot2 <- city_dataframe
gc <- geocode('new york, usa')
center <- as.numeric(gc)
G <- ggmap(get_googlemap(center = center, color = 'color', scale = 4, zoom = 10, maptype = "terrain", frame=T), extent="panel")
G1 <- G + geom_point(aes(x=POINT_X, y=POINT_Y ),data=city_dataframe, shape = 22, color="black", fill = "yellow", size = 4) + geom_point(aes(x=POINT_X, y=POINT_Y ),data=persons_dataframe, shape = 8, color="red", size=2.5)
plot(G1)
结果,我有了一张地图,可以对所有城市和人进行可视化处理。
我的问题:所有人只分布在这三个城市。
我的问题:
geom_text
选项实现这一点,但是我不知道如何将某个位置的所有点求和并将其写入标签。希望这些不是太多问题。
任何帮助深表感谢。提前致谢!
顺便说一句:准备包含示例数据集的问题有更好的帮助吗?我应该将文件上传到某个地方还是pastebin方法可以吗?
您可以通过计算每个城市中的数字并将点的大小映射到计数来创建气泡图:
library(plyr)
persons_count <- count(persons_dataframe, vars = c("city", "POINT_X", "POINT_Y"))
G + geom_point(aes(x=POINT_X, y=POINT_Y, size=freq),data=persons_count, color="red")
您可以将计数映射到点的面积,这也许可以更好地了解相对大小:
G + geom_point(aes(x=POINT_X, y=POINT_Y, size=freq),data=persons_count, color="red") +
scale_size_area(breaks = unique(persons_count$freq))
您可以添加频率标签,尽管在大小比例图例中这有点多余:
G + geom_point(aes(x=POINT_X, y=POINT_Y, size=freq),data=persons_count, color="red") +
geom_text(aes(x = POINT_X, y=POINT_Y, label = freq), data=persons_count) +
scale_size_area(breaks = unique(persons_count$freq))
您无法使用示例数据真正绘制密度,因为您只有三个点。但是,如果您有更多细粒度的位置信息,则可以使用stat_density2d
ggplot2中的函数来计算和绘制密度。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句