文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

聊一聊美化Matplotlib三个小技巧

2024-12-01 15:07

关注

在本文中,我们将介绍3个可以用于定制Matplotlib图表的技巧:

本文中我们将使用折线图为例,但这些技巧也可以应用于其他类型的图。我创建了一个数据集模拟价格和销售数据。

import pandas as pd
import numpy as np
df = pd.read_csv("mock_sales_data.csv", nrows=100)
df.head()

数据包含日期、价格和销售数量列。只显示了数据集的前100行。

减少刻度数

如果在轴上绘制的数据点数量很多,刻度看起来非常的紧凑,甚至可能重叠。在处理时间序列数据时,x轴通常包含占用大量空间的日期,所以可以减少轴上的刻度数来提高显示效果。

让我们先做一个不限制x轴刻度数的例子。

import matplotlib.pyplot as plt
plt.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可视化的小技巧,这些技巧肯定会帮助你创建信息更丰富、功能更强大的数据可视化图表。


来源:DeepHub IMBA内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯