查看原文
其他

ggplot2分面之像素艺术

2017-07-02 Y叔 biobabble

《按地理位置分面》这篇文章中,最后我故意把美国地图拖成心型,我知道你们没看懂,大家用一样的软件,有些人只会照着文档来,有些人却能够超越文档,做出作者都没想到的事情。像这个心型排版的美国各州,诚然是没有什么意义的,可以说是瞎扯蛋了,但这里我其实隐藏了一个我想表达但没说出来的信息,抛开地理信息,这个包可以很好玩,我想这一点,可能连作者也没想到,因为作者说了他的想法来自于statebins包,他一心想要做地理位置分面。


然而看到这个心型,难道你在感觉瞎搞的时候,心中没闪过一个念头?这玩意可以瞎搞!瞎搞!瞎搞啊!

不要被作者的文档给限定了它的使用,不要被软件包的名字给限定了它的使用,更不要被你的大脑限定了它的使用!这是一个很有艺术性,可以放开脑洞,很有逼格的作图方式。

每一个分面panel,都必须是四四方方的格子,分面图形就画在这四四方方的笛卡尔坐标轴上,对于这个分面位置,你能想到什么吗?它难道不是一个像素格子么?

所以我说可以放开脑洞,做点艺术性的事情,你可以搞像素艺术了,然后用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)

p1 + theme_void() + aes(color=color) + theme(strip.text.x = element_blank(), legend.position='none')

赞赏


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存