美化Matplotlib的3个小技巧
来源:DeepHub IMBA
本文约2300字,建议阅读5分钟
本文中,我们将介绍3个可以用于定制Matplotlib图表的技巧
Matplotlib是Python的数据可视化库的基础。它是其他可视化工具(如Seaborn)的基础。
Matplotlib提供了很大的灵活性,因此您可以自定义或调整几乎所有的图表。但是想要完全控制可视化就需要编写更多的代码。
在本文中,我们将介绍3个可以用于定制Matplotlib图表的技巧:
减少x轴或y轴上的刻度数
添加一个辅助y轴
共享x轴的子图坐标对齐
本文中我们将使用折线图为例,但这些技巧也可以应用于其他类型的图。我创建了一个数据集模拟价格和销售数据。
import pandas as pdimport numpy as npdf = pd.read_csv("mock_sales_data.csv", nrows=100)df.head()
数据包含日期、价格和销售数量列。只显示了数据集的前100行。
减少刻度数
如果在轴上绘制的数据点数量很多,刻度看起来非常的紧凑,甚至可能重叠。在处理时间序列数据时,x轴通常包含占用大量空间的日期,所以可以减少轴上的刻度数来提高显示效果。
让我们先做一个不限制x轴刻度数的例子。
import matplotlib.pyplot as pltplt.style.use("seaborn-darkgrid")plt.figure(figsize=(12, 6))plt.plot(df["Date"], df["Price"])plt.show()
可以看到X轴的刻度重叠并且根本无法显示完整。下面我们添加设置只显示部分的刻度,这样可以完整显示。
plt.figure(figsize=(12, 6))plt.plot(df["Date"], df["Price"])#每15个刻度显示一次plt.xticks(np.arange(0, len(df), 15), fontsize=12)plt.yticks(fontsize=12)plt.show()
我们使用NumPy的arange函数来指定标记的位置,现在看起来好多了。
使用辅助轴
如果想在同一个图上显示两个变量。例如将产品的价格和销售数量绘制在一起查看价格对销售数量的影响。
我们的DataFrame中的销售数量和价格列显示在同一线图上,只有一个y轴。
可以看到价格和销售数量的取值范围差距很大我们几乎看不到销售的变化,这时可以使用辅助轴来指定另外一条线的取值范围。
fig, ax1 = plt.subplots(figsize=(12,6))ax2 = ax1.twinx()ax1.plot(df["Date"], df["Price"])ax2.plot(df["Date"], df["SalesQty"], color="orange")ax1.set_ylabel("Price", fontsize=15)ax2.set_ylabel("SalesQty", fontsize=15)ax1.tick_params(axis='both', which='major', labelsize=12)ax2.tick_params(axis='both', which='major', labelsize=12)plt.xticks(np.arange(0, len(df), 15))ax1.grid(False)ax2.grid(False)plt.show()
看起来好多了。我们可以清楚的观察到价格与销售量之间的反比关系。
共享x轴的子图坐标对齐
我们可以在一个Figure对象上创建多个子图。Matplotlib允许使用subplot函数创建子图格。例如下面的代码行创建了一个包含4个子图的2x2网格图。
fig, (ax1, ax2, ax3, ax4) = plt.subplots(nrows=2, ncols=2)
使用nrows和ncols参数自定义网格的大小。
如果我们想在2个子图中共享X轴怎么办呢?我们可以使用tight_layout函数。它可以用于调整子图之间的填充:
fig, (ax1, ax2) = plt.subplots(nrows=2, ncols=1,sharex=True,figsize=(12, 8))fig.tight_layout(pad=2)ax1.plot(df["Date"], df["Price"])ax1.set_title("Price", fontsize=15)ax2.plot(df["Date"], df["SalesQty"])ax2.set_title("SalesQty", fontsize=15)ax1.tick_params(axis='both', which='major', labelsize=12)ax2.tick_params(axis='both', which='major', labelsize=12)plt.xticks(np.arange(0, len(df), 15), fontsize=12)plt.show()
可以看到2个子图的X轴坐标(日期)都已经对齐了,这对于分析时间序列时非常有用的,例如想对比2个产品或者2个不同的门店在同一时期的销售情况,通过对齐日期可以给出非常好的直观判断。
以上就是3个Matplotlib可视化的小技巧,这些技巧肯定会帮助你创建信息更丰富、功能更强大的数据可视化图表。
编辑:王菁
校对:林亦霖
美化Matplotlib的3个小技巧相关推荐
- 16个matplotlib绘图实用小技巧!
关注上方"深度学习技术前沿",选择"星标公众号", 资源干货,第一时间送达! 本文主要 16 个 Matplotlib 绘图实用的小技巧. 1. 添加标题-ti ...
- 送你16个matplotlib绘图实用小技巧(附代码)
来源:雪山飞猪 本文约2800字,建议阅读10分钟 本文为你分享16个matplotlib绘图实用小技巧. 标签:数据分析 1. 添加标题-title import numpy as npimport ...
- Android:相对布局综合小演练—智能家居,按键快速美化的小技巧
一.相对布局综合小演练-智能家居 需要用到的图片 新建一个工程 首先,里面的 android:paddingBottom="@dimen/activity_v ...
- Matplotlib使用小技巧(Python3.5版)
Matplotlib使用小技巧(Python3.5版) 参考链接https://mp.weixin.qq.com/s/aMPH4ABeNlRJ5kBWE-vGPg 1.中文显示 Matplotlib默 ...
- 【matplotlib】条形图及垂线显示小技巧 |一些有用参考帖子收集
最近在画图.一方面看论文看思路,一方面用数据跑图出论文雏形. 有些帖子写得很好,不记录的话下次还想看就只能随缘了. 帖子 博客:nxf_rabbit75 matplotlib技巧-9.共享坐标轴.创建 ...
- Manjaro 安装后的简单配置与美化以及小技巧 (2019.12.15 更新)
一.双显卡驱动 说明 Intel+Nvidia在Linux下的支持并不是很好,如果配置不当会出现耗电增加或是屏幕glich等问题,有几种方案可以实现双显卡的和谐共存,Manjaro自带bumblebe ...
- 这10个小技巧,让你的Python数据分析加速50%!
来自公众号:优达学城Udacity 作者:Parul Pandey,译者:欧剃,编辑:肉松 原文链接:https://towardsdatascience.com/10-simple-hacks-to ...
- UI设计不够高端?这5个小技巧可以试试
UI培训设计是对软件的人机交互.操作逻辑.界面美观度的整体设计.好的UI设计不仅要让软件变得漂亮舒适,还要充分考虑到用户的操作问题. 从事UI设计的朋友们,肯定知道我们在做UI设计时,其实是可以通过一 ...
- 10 个案例分享几个 Python 可视化小技巧,助你绘制高质量图表
作者 | 俊欣 来源 | 关于数据分析与可视化 一般在Python当中,我们用于绘制图表的模块最基础的可能就是matplotlib了,今天小编分享几个用该模块进行可视化制作的技巧,帮助你绘制出更加高质 ...
最新文章
- seaborn使用violinplot函数可视化小提琴图、并在violinplot函数中设置inner参数来添加数据点显示数据的稠密程度
- CentOS中安装MySQL数据库
- rt-thread 自动初始化机制分析-关于编译链接及段信息
- class没有发布到tomcat_Java 类在 Tomcat 中是如何加载的?
- yii开启gii功能
- 每日一笑 | 一些关于集合的知识
- 【2018.5.12】模拟赛之四-ssl2416 条形图【高精度,dp】
- linux 机器格式化_为什么机器人应该为我们格式化代码
- php观察者模式和注册数模式,PHP观察者模式
- 安装Cloudreve 新版V3(go版本)
- 机器学习之 特征工程
- Fundamentals of speech signal processing
- android里面的USB功能-----Accessory模式
- ac命令行隐藏ssid_胖AP性能,多SSID,SSID隐藏,评测小结
- linux什么时候挂载根文件系统,什么时候要重新制作Linux的根文件系统?谢谢
- C语言 猴子吃桃的问题 猴子第一天摘下若干个桃子,当即吃了一半,又多吃了一个。 第二天早上将剩下的桃子吃一半,又多吃一个。以后每天早上都吃了前一天剩下的一半零一个。 到第N天早上想再吃时只剩下一个桃子
- opencv图像形态学运算
- Windows快捷键大全(2020年版)
- 【Pytorch神经网络理论篇】 39 Transformers库中的BERTology系列模型
- python可以替代office吗_哪些办公软件可以完美替代 Microsoft Office?