如何用R制作一副精美的无与伦比的北欧极简地图装饰画
看到贴出来的教学文章,怎么用PS做城市地图,看了一下,发现主要是选取和替换颜色的工作,正好可以用手边的工具来完成,所以也来写一个玩,这个除了安装免费的R花的时间之外就是零成本的办法了,既不用高大上的PS也不用AI,新手也可以直接操作,而且不论你需要那个地方的地图都不用求人了
主要参考了这篇文章:https://post.smzdm.com/p/akmrpkp4/, 那个AI的矢量图办法搞不定https://post.smzdm.com/p/az59wlrr/ 。
1 工具和素材
1.1 先说工具:R, 免费的开源软件,R-studio,R的外壳,也是免费的。两个的下载地址随便网上都能搜到,而且体积很小。
本来在线的Azure notebook是个更简单的选择,但是微软那个没法配置magick包,只有放弃。
1.2 参考上面那篇文章的办法,在这里下载谷歌地图。现在谷歌鸡贼了,不给钱是没法用API来免费下载地图了,其他几家在线地图也是一样,想要用R的ggmap去下载的同学都可以省了这条心。
下载的时候把左边条的 “labels” 撸到最小,神奇的事情就发生了,标识消失了,然后我们最大化地图,用截图工具截图,保存为PNG格式。
(这句是抄的)
就这两步,不用一毛钱就可以搞定,也不用你有啥预备知识,就是下载、安装软件,截图,保存。
2 工作流程
2.1 解释
剩下的事情很简单,利用R的magick包,可以处理很简单的处理图像,那个抠图,填色的过程就用2句就可以实现:
image_transparent(img,color ="#ebe9e5",fuzz = 5)
这个把img里面颜色代码为 #ebe9e5 的部分挑选出来,fuzz=5 就是上文PS里面的颜色容量的意思,这个fuzz取值从0到100,越大的话,选择的容忍度就越大,这个需要自己考虑截图下来的细节反复调整,不过蛮好玩的,运行一下,就看到地图变一下,很有动感。
然后就是用背景填充的办法,把你想要的颜色填上去,主要是各种层次的灰色和黑色、白色。
image_background(color ="white", flatten = TRUE)
对你而言,需要调整的就是三个地方:原图上的颜色(color ="#ebe9e5"),替换成的颜色(color ="white"),fuzz=5
比用ps好的地方是,你只要输数据进去就行了,没有那么多技巧。
颜色代码从哪里来呢?如果是简单的纯色,你可以直接输入颜色名字:red, white……,如果比较复杂的话,还是用windows内置的画笔程序来吧,画笔读出来的颜色前面加上#号就行了,比如“#fff2af”。
2.2 操作
下面操作过程很简单,你就反复调整上面那三个参数,直到你想要的北欧风格地图出现为止。
代码:
#安装两个必须的包,这个只是第一次运行时安装一下,后面就不用再运行了
install.packages("magick")
install.packages("rsvg")
# 加载安装的图形处理包,
library(magick)
library(rsvg)
#读入图形,为了简单,我把截图直接放在了d盘根目录了,
#这个注意一下,路径表示的方法,用的是斜线不是反斜线啊
img<-image_read('d:/chengdu.png')
img
#下面就是替换地图里面颜色的代码,每一段代码替换一种颜色:街道、公路、河流、空白地……
img1<-image_transparent(img,color ="#ffffff",fuzz = 8)
img1<-image_background(img1, color ="#a7a5a5", flatten =TRUE)
img1
img1<-image_transparent(img1,color ="#ebe9e5",fuzz = 0)
img1<-image_background(img1, color ="white", flatten = TRUE)
img1
img1<-image_transparent(img1,color ="#fff2af",fuzz = 5)
img1<-image_background(img1, color ="Black", flatten = TRUE)
img1
img1<-image_transparent(img1,color ="#f6cf65",fuzz = 10)
img1<-image_background(img1, color ="Black", flatten = TRUE)
img1
img1<-image_transparent(img1,color ="#fff2af",fuzz = 10)
img1<-image_background(img1, color ="Black", flatten = TRUE)
img1
img1<-image_transparent(img1,color ="#f29d09",fuzz = 10)
img1<-image_background(img1, color ="Black", flatten = TRUE)
img1
img1<-image_transparent(img1,color ="#aadaff",fuzz = 10)
img1<-image_background(img1,color = "#585858", flatten = TRUE)
img1
img1<-image_transparent(img1,color ="#c4ecb4",fuzz = 18)
img1<-image_background(img1, color = "#c3c3c3", flatten = TRUE)
img
启动R studio,然后新建脚本文件,把上面的代码粘进去,修改一下图片文件的名字和位置(我用的图片文件名字是"d:/chengdu.png"),然后就选“一段”代码,然后运行一下,看效果如何,再运行“下一段”……
这些代码就是分别把公路,小路,湖泊、河流,背景,替换成你希望的新颜色。
每次运行都有结果在旁边的Views里面显示,如果想看大图,可以点按钮把图片发送到浏览器里面打开查看
3 外观展示
使用感受
如果有兴趣搞着玩还是蛮有意思的,不用学抠图,不用装昂贵的PS软件,在自己就可以做出家乡的地图,很值啊。
熟悉R的话,用dplyr包来传递,再循环来遍历颜色定义,代码就很变成简单几行,但是刚接触的用户,代码可读性就不强了,多几行,可以慢慢调着看成果一步步显现出来,还是比较有趣。
最后就是保存图片,在图片下面加上一行英文,显示B格高,这个就看个人偏好了
总结
免费的开源软件啊,还有什么东西比免费的更好呢。













值友9877666859
校验提示文案
phyllislee
校验提示文案
phyllislee
校验提示文案
值友9877666859
校验提示文案