ggplot2分面之像素艺术
《按地理位置分面》这篇文章中,最后我故意把美国地图拖成心型,我知道你们没看懂,大家用一样的软件,有些人只会照着文档来,有些人却能够超越文档,做出作者都没想到的事情。像这个心型排版的美国各州,诚然是没有什么意义的,可以说是瞎扯蛋了,但这里我其实隐藏了一个我想表达但没说出来的信息,抛开地理信息,这个包可以很好玩,我想这一点,可能连作者也没想到,因为作者说了他的想法来自于statebins包,他一心想要做地理位置分面。
然而看到这个心型,难道你在感觉瞎搞的时候,心中没闪过一个念头?这玩意可以瞎搞!瞎搞!瞎搞啊!
不要被作者的文档给限定了它的使用,不要被软件包的名字给限定了它的使用,更不要被你的大脑限定了它的使用!这是一个很有艺术性,可以放开脑洞,很有逼格的作图方式。
每一个分面panel,都必须是四四方方的格子,分面图形就画在这四四方方的笛卡尔坐标轴上,对于这个分面位置,你能想到什么吗?它难道不是一个像素格子么?
![](https://guangchuangyu.github.io/blog_images/2017/Screenshot 2017-06-26 15.49.50.png)
所以我说可以放开脑洞,做点艺术性的事情,你可以搞像素艺术了,然后用ggplot2画图,分面拼成你的像素画!
《happy thanks giving》这篇文章在感恩节的时候写的,画了一只火鸡,我们可以试一下,用这只火鸡来做分面。
Turkey <- read.csv("http://pages.iu.edu/~cdesante/turkey.csv")
colnames(Turkey)[2:1] = c("row", "col")
Turkey$row = max(Turkey$row) - Turkey$row +1
Turkey$name <- Turkey$code <- paste0('turkey', 1:nrow(Turkey))
require(ggplot2)
require(geofacet)
x <- split(eu_gdp, eu_gdp$code)
x <- x[sample.int(length(x), nrow(Turkey), replace=T)]
for (i in 1:length(x)) {
x[[i]]$code = Turkey$code[i]
}
y <- do.call(rbind, x)
color = Turkey$Turkey.Colors
names(color) = Turkey$code
y$color = color[y$code]
Turkey = Turkey[, -3]
p1 <- ggplot(y, aes(gdp_pc, year))+ geom_line() +
facet_geo(~code, grid=Turkey, scales='free')
print(p1)
![](https://guangchuangyu.github.io/blog_images/R/geofacet/Screenshot 2017-06-26 14.00.53.png)
p1 + theme_void() + aes(color=color) + theme(strip.text.x = element_blank(), legend.position='none')
![](https://guangchuangyu.github.io/blog_images/R/geofacet/Screenshot 2017-06-26 19.44.30.png)