优雅使用Matplotlib的3个小技巧

图片[1]-优雅使用Matplotlib的3个小技巧-山海云端论坛

Matplotlib是Python中最常用的数据可视化库之一,也是其他库如Seaborn的基础。它提供了极大的灵活性,允许用户对图表进行高度定制。然而,有时候想要完全控制可视化效果可能需要编写更多的代码。

在本文中,我们将介绍三个能够定制Matplotlib图表的小技巧,包括减少轴上的刻度数、添加辅助y轴以及共享x轴的子图坐标对齐。我们将以折线图为例进行演示,但这些技巧同样适用于其他类型的图表。我们将使用一个模拟的销售数据集来进行示例演示。

图片[2]-优雅使用Matplotlib的3个小技巧-山海云端论坛

首先,让我们加载数据集并展示前几行数据:

<code>import pandas as pd # 读取数据集 df = pd.read_csv("mock_sales_data.csv", nrows=100) # 展示数据集前几行 print(df.head())</code>

1. 减少刻度数

如果在轴上绘制的数据点数量很多,刻度可能会显得非常拥挤甚至重叠。特别是在处理时间序列数据时,x轴通常包含大量的日期,因此可以通过减少轴上的刻度数来改善显示效果。

首先,让我们看一个未限制刻度数的例子:

<code>import matplotlib.pyplot as plt plt.figure(figsize=(12, 6)) plt.plot(df["Date"], df["Price"]) plt.show()</code>
图片[3]-优雅使用Matplotlib的3个小技巧-山海云端论坛

可以看到X轴的刻度重叠,无法完整显示。接下来,我们设置只显示部分刻度:

<code>plt.figure(figsize=(12, 6)) plt.plot(df["Date"], df["Price"]) plt.xticks(np.arange(0, len(df), 15), fontsize=12) # 每隔15个刻度显示一次 plt.yticks(fontsize=12) plt.show()</code>
图片[4]-优雅使用Matplotlib的3个小技巧-山海云端论坛

使用NumPy的arange函数来指定标记的位置,这样显示效果就好多了。

2. 使用辅助轴

如果想在同一个图上展示两个变量,比如产品的价格和销售数量,但它们的取值范围差异很大,这时可以使用辅助y轴来分别指定另外一条线的取值范围。

<code>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()</code>

通过添加辅助y轴,我们可以清楚地观察到价格与销售数量之间的关系。

图片[5]-优雅使用Matplotlib的3个小技巧-山海云端论坛

3. 共享x轴的子图坐标对齐

在一个Figure对象上创建多个子图时,如果想要在两个子图中共享x轴,可以使用sharex=True参数,并结合tight_layout函数进行子图布局调整。

<code>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()</code>
图片[6]-优雅使用Matplotlib的3个小技巧-山海云端论坛

通过共享x轴,我们可以对比不同变量在同一时间范围内的趋势变化。

以上就是三个Matplotlib可视化的小技巧,这些技巧能够帮助您创建更丰富、更有信息量的数据可视化图表。

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容