Matplotlib是Python数据可视化库的基础。它是其他可视化工具(如Seaborn)的基础。Matplotlib提供了很大的灵活性,因此您几乎可以自定义或调整任何绘图。但是要完全控制可视化需要编写更多代码。在本文中,我们将介绍3种可用于自定义Matplotlib图表的技术:减少x轴或y轴上的刻度数添加辅助y轴共享x轴坐标对齐的子图在本文中我们将以折线图为例,但这些技术也可以应用于其他类型的图表。我创建了一个数据集来模拟价格和销售数据。importpandasaspdimportnumpyasnpdf=pd.read_csv("mock_sales_data.csv",nrows=100)df.head()数据包含日期、价格和销售数量列。仅显示数据集的前100行。减少刻度数如果绘制在轴上的数据点数很多,刻度看起来会很紧,甚至可能重叠。在处理时间序列数据时,x轴通常包含占用大量空间的日期,因此可以减少轴上的刻度数以改善显示效果。我们先做一个不限制x轴刻度数的例子。importmatplotlib.pyplotaspltplt.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轴。可以看出价格和销量的取值范围相差很大,几乎看不到销量的变化。这时可以用辅助轴来指定另一条线的取值范围。图,ax1=plt.subplots(figsize=(12,6))ax2=ax1.twinx()ax1.plot(df["日期"],df["价格"])ax2.plot(df["日期"],df["SalesQty"],color="orange")ax1.set_ylabel("Price",fontsize=15)ax2.set_ylabel("SalesQty",fontsize=15)ax1.tick_params(axis='both',其中='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()可以看到两个子图的X轴坐标(日期)已经对齐了,这个对于分析时间序列非常有用。比如你想比较2个产品或者2个不同店铺在同一时期的销量,通过对齐日期就可以给出很好的直观判断。这些是3个Matplotlib可视化技巧,一定会帮助您创建信息量更大、功能更强大的数据可视化。https://avoid.overfit.cn/post/bbb257b59ecc410c9611f2be2473b83d作者:SonerY?ld?r?m
