网易首页 > 网易号 > 正文 申请入驻

美化Matplotlib的3个小技巧

0
分享至

Matplotlib是Python的数据可视化库的基础。它是其他可视化工具(如Seaborn)的基础。

Matplotlib提供了很大的灵活性,因此您可以自定义或调整几乎所有的图表。但是想要完全控制可视化就需要编写更多的代码。

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

  • 减少x轴或y轴上的刻度数
  • 添加一个辅助y轴
  • 共享x轴的子图坐标对齐

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

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

https://avoid.overfit.cn/post/bbb257b59ecc410c9611f2be2473b83d

作者:Soner Yıldırım

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
太燃了!某新势力年会抽奖,110台iPhone 17 Pro

太燃了!某新势力年会抽奖,110台iPhone 17 Pro

电动知家
2026-02-11 21:35:07
这一晚,洗把脸就走红毯的谢霆锋,秒了内娱一堆涂脂抹粉的小鲜肉

这一晚,洗把脸就走红毯的谢霆锋,秒了内娱一堆涂脂抹粉的小鲜肉

大铁猫娱乐
2026-02-10 13:45:07
文内马斯:廉子文道歉毫无意义 至少铜牌该是我的

文内马斯:廉子文道歉毫无意义 至少铜牌该是我的

体坛周报
2026-02-12 10:51:11
李亚鹏突然提到十年前最难时给黄晓明发短信,不到一分钟收到回复

李亚鹏突然提到十年前最难时给黄晓明发短信,不到一分钟收到回复

百态人间
2026-02-10 15:25:10
罕见!岛内多党派人士纷纷声援高金素梅

罕见!岛内多党派人士纷纷声援高金素梅

中国网
2026-02-12 09:02:03
你无意间撞见过什么秘密?网友:我婆婆和公公外面都各自有人

你无意间撞见过什么秘密?网友:我婆婆和公公外面都各自有人

带你感受人间冷暖
2026-02-12 00:05:09
“你怎么知道我把李婷娶到了”,男子高速上偶遇一拉横幅的“孤独”婚车,多辆陌生车跟在后面陪跑成接亲车队

“你怎么知道我把李婷娶到了”,男子高速上偶遇一拉横幅的“孤独”婚车,多辆陌生车跟在后面陪跑成接亲车队

都市快报橙柿互动
2026-02-12 08:14:59
蒙古超级大铜矿拒绝中方,澳洲力拓欣喜接盘后,被一幕整懵了!

蒙古超级大铜矿拒绝中方,澳洲力拓欣喜接盘后,被一幕整懵了!

百态人间
2026-02-11 15:41:30
浙江一老板为女儿办婚宴,拒付252桌酒席钱,法院判了

浙江一老板为女儿办婚宴,拒付252桌酒席钱,法院判了

环球网资讯
2026-02-11 19:25:14
TVB女实习记者转型香港警队重案组总督察,网友:人生果然充满无限可能

TVB女实习记者转型香港警队重案组总督察,网友:人生果然充满无限可能

都市快报橙柿互动
2026-02-12 04:49:45
挖坟了!一女子网购敬酒服穿脏后焊接吊牌退货,网友扒出发货地址

挖坟了!一女子网购敬酒服穿脏后焊接吊牌退货,网友扒出发货地址

火山詩话
2026-02-12 08:23:01
李玮锋:董方卓水平不行曼联能花钱买他?李铁踢英超70分钟没体能

李玮锋:董方卓水平不行曼联能花钱买他?李铁踢英超70分钟没体能

念洲
2026-02-12 08:47:23
性商训练营乱象调查:3天要价近五千,还兜售“缩阴”凝胶

性商训练营乱象调查:3天要价近五千,还兜售“缩阴”凝胶

南方都市报
2026-02-12 11:46:15
知名歌手宣布:3月28日深圳演唱会,可全额退款

知名歌手宣布:3月28日深圳演唱会,可全额退款

深圳晚报
2026-02-11 19:35:29
在深圳附近花110万买的海景房,现在跌到十几万,无人接盘

在深圳附近花110万买的海景房,现在跌到十几万,无人接盘

流苏晚晴
2026-02-11 18:30:55
女子故意扮丑去相亲,男子一眼看中,女子吃惊:他是不是太饿了

女子故意扮丑去相亲,男子一眼看中,女子吃惊:他是不是太饿了

丫头舫
2026-02-10 22:18:05
闻泰科技关于荷兰企业法庭就安世半导体案件最新裁决的声明

闻泰科技关于荷兰企业法庭就安世半导体案件最新裁决的声明

环球网资讯
2026-02-12 07:25:20
为什么领导很少生病请假,总是精力充沛?主要有这4点

为什么领导很少生病请假,总是精力充沛?主要有这4点

细说职场
2026-02-11 17:27:08
联想moto X70 Air Pro 以百倍长焦与云台防抖亮相新加坡航展

联想moto X70 Air Pro 以百倍长焦与云台防抖亮相新加坡航展

科技视讯
2026-02-11 21:04:14
全球最贵!10岁马来西亚男孩100美元买下域名“AI.com”,33年后卖出7000万美元

全球最贵!10岁马来西亚男孩100美元买下域名“AI.com”,33年后卖出7000万美元

台州交通广播
2026-02-12 00:21:21
2026-02-12 12:52:49
deephub incentive-icons
deephub
CV NLP和数据挖掘知识
1918文章数 1448关注度
往期回顾 全部

科技要闻

xAI高层大地震!马斯克紧急重组,反手画饼

头条要闻

立陶宛总理:考虑将"台湾代表处"更名为"台北代表处"

头条要闻

立陶宛总理:考虑将"台湾代表处"更名为"台北代表处"

体育要闻

31岁首次参加冬奥,10年前她是个水管工

娱乐要闻

体操运动员坠楼涉事教练被立案调查

财经要闻

中国乳业2025年回顾:行业寒潮压顶

汽车要闻

宝马全球大召回 起火隐患涉及多款热门车型

态度原创

手机
旅游
本地
时尚
公开课

手机要闻

网传魅族23项目停止手机业务或将解散,官方尚未回应

旅游要闻

广西女子骑小电驴独自从上海返回南宁,历时近两个月,行程3000多公里

本地新闻

下一站是嘉禾望岗,请各位乘客做好哭泣准备

这些才是适合普通人的冬天穿搭!不露腿、不露腰,得体又大方

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版