Kami akan membuat beberapa alamat IP, melakukan geolokasi dan memplotnya:
library(iptools)
library(rgeolocate)
library(tidyverse)
Hasilkan satu juta (terlalu merata) alamat IPv4 acak:
ips <- ip_random(1000000)
Dan, lakukan geolokasi:
system.time(
rgeolocate::maxmind(
ips, "~/Data/GeoLite2-City.mmdb", c("longitude", "latitude")
) -> xdf
)
## user system elapsed
## 5.016 0.131 5.217
5s untuk 1m IPv4. 👍🏼
Sekarang karena keseragaman, gelembung akan menjadi kecil bodoh, jadi hanya untuk contoh ini kita akan membulatkannya sedikit:
xdf %>%
mutate(
longitude = (longitude %/% 5) * 5,
latitude = (latitude %/% 5) * 5
) %>%
count(longitude, latitude) -> pts
Dan, plot mereka:
ggplot(pts) +
geom_point(
aes(longitude, latitude, size = n),
shape=21, fill = "steelblue", color = "white", stroke=0.25
) +
ggalt::coord_proj("+proj=wintri") +
ggthemes::theme_map() +
theme(legend.justification = "center") +
theme(legend.position = "bottom")
Anda dapat melihat apa yang saya maksud tentang "terlalu seragam". Namun, Anda memiliki IPv4 "asli", jadi Anda harus gtg.
Pertimbangkan untuk menggunakan scale_size_area()
, tetapi, sejujurnya, pertimbangkan untuk tidak merencanakan IPv4 di peta geografis sama sekali. Saya melakukan penelitian skala internet untuk mencari nafkah dan klaim akurasi meninggalkan banyak hal yang diinginkan. Saya jarang pergi ke bawah atribusi tingkat negara karena alasan itu (dan kami membayar untuk data "nyata").