前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >另类地图的Python和R绘制

另类地图的Python和R绘制

作者头像
DataCharm
发布2021-02-22 15:17:52
9420
发布2021-02-22 15:17:52
举报

01. 引言

由于最近开始使用R-ggplot2绘制一些可视化作品,也慢慢发现ggplot2绘图的方便之处,但毕竟开始于Python绘图,我们也不能落下

。所以尽量实现两种语言绘制同一幅可视化作品。本期推文也不例外,涉及的内容为地图数据,下面我们直接开始。

02. Python-matplotlib 绘制

我们使用的数据如下(部分):

我们主要使用上述四个特征列进行可视化绘制。首先,我们还是对各个地区(region) 进行颜色设置,使用我们常用的字典形式,如下:

代码语言:javascript
复制
region_color = {
     'Africa': '#EA7480',
     'Oceania': '#1BB6AF',
     'Asia': '#F8CD9C',
     'South America': '#172869',
     'North America': '#088BBE',
     'Europe': '#F6A1A5'}
  • 可视化绘制

这里使用matplotlib 的形状(patches)绘制函数,具体为矩形(Rectangle) 。官网参数及主要解释如下:

Rectangle类:

代码语言:javascript
复制
class matplotlib.patches.Rectangle(
    xy, width, height, angle=0.0, **kwargs)

参数:

xy: 2元组 矩形左下角xy坐标

width:矩形的宽度

height:矩形的高度

angle: float, 可选,矩形相对于x轴逆时针旋转角度,默认0

fill: bool, 可选,是否填充矩形。

绘制代码如下:

代码语言:javascript
复制
import pandas as pd
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
from matplotlib.patches import Rectangle

plt.rcParams['font.family'] = ["Roboto Mono"]
#from matplotlib.collections import PatchCollection
fig,ax = plt.subplots(figsize=(8,6),dpi=250,facecolor='#66BFBF',edgecolor='#66BFBF')
ax.set_facecolor('#66BFBF')

for x,y,c in zip(map_data.x,map_data.y,map_data.region):
    rect = Rectangle((x+1,y+1),width=.95,height=.95, color=region_color[c])
    ax.add_patch(rect)
#添加文本
for x,y,t in zip(map_data.x,map_data.y,map_data["alpha.2"]):
    ax.text(x+1.1,y+1.8,t,c="white",size=6.5,fontweight='bold')
    
#定制化设置
ax.set_xticks([])
ax.set_xlim(left=1,right=32)
ax.set_yticks([])
ax.set_ylim(top=24,bottom=0)
#转置y轴
ax.invert_yaxis()
for spine in ['top','bottom','left','right']:
    ax.spines[spine].set_visible(None)
ax.tick_params(left=None,bottom=False)

#添加描述信息
ax.text(.9,.006,'\nVisualization by DataCharm',transform = ax.transAxes,
        ha='center', va='center',fontsize = 7,color='white',fontweight='bold')
plt.savefig(r'F:\DataCharm\商业艺术图表仿制\map_student_matplotlib.png',width=8,height=6,
            dpi=900,bbox_inches='tight',facecolor='#66BFBF')

结果如下:

03. R-ggplot2 绘制

数据为同样数据(格式符合ggplot2 绘制要求),这里主要使用 geom_tile()和geom_text() 函数。这里我们主要解释下 geom_tile() 函数。其主要用于绘制“方块”,和 geom_rect()、geom_raster() 作用相似,不同之处在于其使用图块的中心及其大小(x,y,width,height),这就和matplotlib的 Rectangle类 几乎一样的功能。具体绘图代码如下:

代码语言:javascript
复制
map_region  <-  data %>% 
    ggplot(aes(x = x, y = y, fill = region, color = region)) + 
    geom_tile() +
   #添加文字
    geom_text(aes(x = x, y = y, label = alpha.2), color = "white", size = 2.3, 
              fontface = "bold", family = "Roboto_Mono")+
    #转置y轴
    scale_y_reverse() +
    #自定义颜色 matplotlib 中颜色设置就是来源于此。
    scale_fill_manual(values = lacroix_palette("Pamplemousse", n = 6, type = "discrete"), guide = F) +
    scale_color_manual(values = lacroix_palette("Pamplemousse", n = 6, type = "discrete"), guide = F) +
    coord_equal() +
    #定制化设置
    theme(line = element_blank(),
          panel.background = element_rect(fill = "#66BFBF"),
          plot.background = element_rect(fill = "#66BFBF", color = "#66BFBF"),
          panel.border = element_blank(),
          #strip.background = element_rect(colour = "grey20"),
          axis.text = element_blank(),
          plot.margin = margin(0, 0, 0, 0)) +
    labs(x = NULL, y = NULL,caption = "\nVisualization by DataCharm")
map_region

可以看出,得益于ggplot2 强大的绘图功能,省去了matplotlib 循环绘制的麻烦,直接 映射 即可。可视化效果如下:

两张图是不是看起来机会一样,大家可以自行选择自己喜欢的语言进行绘制,我这里只是为大家提供绘图思路而已

04. 总结

这篇推文也算是同时使用Python-matplotlib 和R-ggplot2 绘制同一幅可视化作品。至于这副图的具体用处,大家可以放置在一些世界地图上,做为另类"图例"。能力有限,有出错的地方大家可以指出或者进群讨论。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DataCharm 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 01. 引言
  • 02. Python-matplotlib 绘制
  • Rectangle类:
  • 参数:
  • 03. R-ggplot2 绘制
  • 04. 总结
相关产品与服务
图数据库 KonisGraph
图数据库 KonisGraph(TencentDB for KonisGraph)是一种云端图数据库服务,基于腾讯在海量图数据上的实践经验,提供一站式海量图数据存储、管理、实时查询、计算、可视化分析能力;KonisGraph 支持属性图模型和 TinkerPop Gremlin 查询语言,能够帮助用户快速完成对图数据的建模、查询和可视化分析。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档