专栏首页气象杂货铺建议收藏!Matplotlib常见组件设置整理

建议收藏!Matplotlib常见组件设置整理

继上一篇文章为大家介绍了pltax绘图的区别后,这篇文章结合我自己的一些使用经历,为大家整理了Matplotlib中比较常用的一些组件设置。

个人认为用Matplotlib画出一张图来不难,难的是对于一些细节东西的设置,可能在一个小小的细节处理上就得百度好久,所以可以先点收藏了再看,需要的时候可以及时找出来看看。

先上一张官方绘制的关于各个组件在一张图中的名词解释,通过这张图可以很直观地感受到什么是legend,什么是tick……,遇到不会设置的也可以照着图搜索对应的文档,下面具体讲讲。

注:下方的图片均使用fig,ax = plt.subplots()的方式生成

设置显示中文字体

Matplotlib中默认将中文显示为乱码的◻,如下面这种情况

fig,ax = plt.subplots()
ax.plot(['北京','上海','深圳'],[1,3,5])
plt.show()

所以在绘图前可以通过下面的代码解决这个问题

plt.rcParams['font.sans-serif'] = ['SimHei']
# SimHei:微软雅黑
# FangSong:仿宋
# 这两个是我常用的,其他的可以上网搜一搜

fig,ax = plt.subplots()
ax.plot(['北京','上海','深圳'],[1,3,5])
plt.show()

设置标题(title)

函数:ax.set_title

利用fontdictloc参数可以分别对字体和标题位置进行设置

fig,ax = plt.subplots()
ax.plot(['北京','上海','深圳'],[1,3,5])

#设置16px的字体大小,将标题显示在左侧
ax.set_title('标题',fontdict={'size':16},loc = 'left')
plt.show()

边框(spine)的显示问题

函数:ax.spines[loc].set_visible(False)

一般的图表中,Matplotlib会默认显示出图形的spine,英文其实不太好翻译,谷歌翻译成脊柱???

我一般把他叫做边框,就是图形上下左右的四条边线,如图

我觉得这个边框加上去其实挺丑的,正常使用中有些时候仅仅需要左边left和底部bottomspine,也有时候四条边框都不需要,可以这么设置:

fig,ax = plt.subplots()
ax.plot(['北京','上海','深圳'],[1,3,5])
# 只要左边和底部的边框
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
plt.show()

图例设置(legend)

函数:ax.legend()

图例是对图形所展示的内容的解释,比如在一张图中画了三条线,那么这三条线都代表了什么呢?这时就需要做点注释。

要显示图例可以有两种方式:

# 第一种:
# plot的时候加上label,之后调用ax.legend()
fig,ax = plt.subplots()
ax.plot(['北京','上海','深圳'],[1,3,5],label='2010')
ax.plot(['北京','上海','深圳'],[2,4,6],label='2020')
ax.legend()
plt.show()

# 第二种:
# 使用ax.legend()按顺序设置好图例
fig,ax = plt.subplots()
ax.plot(['北京','上海','深圳'],[1,3,5])
ax.plot(['北京','上海','深圳'],[2,4,6])
ax.legend(['2010','2020'])
plt.show()

frameonfontsize参数可以设置是否显示图例的边框以及图例中文字的大小。

图形与边框之间的留白控制

函数:ax.margins()

不知道大家绘图的时候有没有发现,Matplotlib中默认在我们所画的图形和边框之间留有空白,比如

要去掉这样的空白部分可以使用ax.margins()进行设置

fig,ax = plt.subplots()
ax.plot(['北京','上海','深圳'],[1,3,5])
ax.fill_between(['北京','上海','深圳'],[1,1,1],[1,3,5],color='#7b68ee')
# 可以设置四个方向都不留白,也可以单独设置留白的方向和宽度
ax.margins(0)
plt.show()

设置双坐标轴

函数:ax.twinx()

双坐标轴一般用于复合图表,同时表示两种图表的指标量纲不一,经典的使用场景如帕累托图。

使用中,需要对原有的ax使用.twinx()方法生成ax2,再利用ax2进行绘图

fig,ax = plt.subplots()
ax.plot(['北京','上海','深圳'],[1,3,5],color='r')

# 双坐标用法
ax2 = ax.twinx()
ax2.bar(['北京','上海','深圳'],[20,40,60],alpha=0.3)

plt.show()

坐标轴相关设置

在一张二维图中,关于坐标轴各个零件的术语如图所示

首先有横坐标xaxis和纵坐标yaxis(注意与axes区分),横纵坐标上的标签(也可以说是横纵坐标的名字)为xlabelylabel,横纵坐标上有刻度线tick,刻度上对应的刻度标签则是tick label

具体设置时所对应的函数为

  • xlabel -->ax.set_xlabel()
  • ylabel -->ax.set_ylabel()
  • tick和tick label -->ax.tick_paramsax.xticks()ax.yticks()
fig,ax = plt.subplots()
ax.scatter([3,2,1],[1,3,5],color='r')
ax.plot([3,2,1],[1,3,5],color='r')

# 分别设置xy轴的标签
ax.set_xlabel('x',fontsize=16)
ax.set_ylabel('y',fontsize=16)
fig,ax = plt.subplots()
ax.scatter([3,2,1],[1,3,5],color='r')
ax.plot([3,2,1],[1,3,5],color='r')

# fontsize设置刻度标签的大小
# direction控制刻度是朝内还是朝外显示
ax.tick_params(labelsize=14,direction='in')

网格线(grid)设置

函数:ax.grid()

网格线多用于辅助查看具体的数值大小,横纵坐标都可以设置相应的网格线,视具体情况而论。

fig,ax = plt.subplots()
ax.plot([1,2,3],[4,2,6],color='r')
# b参数设置是否显示网格
# axis参数设置在哪个轴上显示网格线,可选参数为'x','y','both'
ax.grid(b=True,axis='y')

常用的图表组件设置就总结到这里,有写错的地方也欢迎拍砖!

本文分享自微信公众号 - 气象杂货铺(meteogs)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python教程 | 最标准的地图调用方式(国家测绘局提供数据)

    天地图是国家测绘地理信息局建设的地理信息综合服务网站,是国家地理信息公共服务平台的公众版。 与常用的谷歌地图、腾讯地图、百度地图、微软地图、必应地图相比,天地图...

    bugsuse
  • 绘图|解决Cartopy Lambert投影坐标轴标签设置问题

    python中有两个使用最频繁的地图绘图库:Basemap和Cartopy,两者各有优劣。由于Cartopy和matplotlib的兼容性更好,并且用户友好度更...

    bugsuse
  • 真・WRF模式后处理之Python版

    WRF模式是数值天气预报和大气模拟系统,其开发目的就是用语研究和实际应用。运行WRF模式时,可以利用多种初始场数据来驱动,然后配置好选项之后便可以模拟天气过程(...

    bugsuse
  • 可视化技能之Matplotlib(上)|可视化系列01

    Matplotlib可以说是Python最声名远扬的可视化库了,也是Python数据分析库的“三驾马车”之一。Matplotlib是基础而非常强大的可视化库,S...

    蛰虫始航
  • 高效使用 Python 可视化工具 Matplotlib

    Matplotlib是Python中最常用的可视化工具之一,可以非常方便地创建海量类型的2D图表和一些基本的3D图表。本文主要推荐一个学习使用Matplotli...

    1480
  • 高效使用 Python 可视化工具 Matplotlib

    Matplotlib是Python中最常用的可视化工具之一,可以非常方便地创建海量类型的2D图表和一些基本的3D图表。本文主要推荐一个学习使用Matplotli...

    昱良
  • 如何用python画图--matplotlib实例与补充

    在第一篇文章中,大家一定看到了包含Figure,Axes,Axis等的代码,可能会一头雾水,不知道这些分别表示什么。这里就给大家仔细解释一下。掌握了这些之后,绘...

    zhangqibot
  • Matplotlib玩转动态可视化

    最近看到很多盆友们用pyecharts、Bokeh和plotly等绘图库制作动态图,还有用pbi制作的,以及网页工具flourish等。其实matplotlib...

    刘早起
  • 个性化调整坐标轴的颜色和位置

    之前的文章中介绍了修改默认情况下,matplotlib绘制的图片都是有一个正方形的方框,示意如下

    生信修炼手册
  • (数据科学学习手札78)基于geopandas的空间数据分析——基础可视化

      通过前面的文章,我们已经对geopandas中的数据结构、坐标参考系以及文件IO有了较为深入的学习,在拿到一份矢量数据开始分析时,对其进行可视化无疑是探索了...

    Feffery

扫码关注云+社区

领取腾讯云代金券