Matplotlib轴刻度值大小修改无效,如何调整刻度大小及图表线宽?
解决Matplotlib ECDF图的刻度大小与线宽问题
问题原因
ax.tick_params设置无效:代码顺序错误,plt.show()之后创建了新的空figure,而ax属于之前的figure,且plt.show()默认会关闭当前figure,导致后续设置无法作用到最终保存的图表。- 线宽未调整:绘制ECDF曲线时未指定线宽参数。
修正后的完整代码
import numpy as np import statsmodels.api as sm import matplotlib.pyplot as plt price_values = [[4.2], [4.1], [4], [3.8], [3.9], [4.2], [4.5], [4.8], [5.2], [5.2], [5.2], [5.6], [5.2], [5.1], [5.3], [6], [6.2], [6.3], [6.2], [6], [5.5] , [5.2], [4.8], [4.6]] sample = np.asarray(price_values).squeeze() ecdf = sm.distributions.ECDF(sample) # 提前设置figure尺寸与边框线宽 plt.figure(figsize=(7, 4), linewidth=3) x = np.linspace(min(sample), max(sample)) y = ecdf(x) # 绘制ECDF时指定线宽 plt.step(x, y, linewidth=3) ax = plt.gca() ax.set_xlabel("Price [Cent/kWh]", fontsize=14, labelpad=8) ax.set_ylabel("Cumulative frequency", fontsize=14, labelpad=8) # 在plt.show()之前设置刻度文字大小 ax.tick_params(axis='both', which='major', labelsize=12) # 140数值过大易重叠,示例改为12,可按需调整 plt.show() # 直接保存当前已绘制的figure,无需新建空figure plt.savefig('C:/Users/User1/Desktop/Diagramm_EDF.png', edgecolor='black', dpi=300, bbox_inches='tight')
关键改动说明
- 增大ECDF线宽:在
plt.step()中添加linewidth参数,数值可根据需求调整(示例用3)。 - 修复刻度设置失效:将
ax.tick_params()移至plt.show()之前,确保作用到当前正在绘制的图表;注意labelsize=140数值过大,会导致刻度文字重叠,建议改为12-16这类合理数值。 - 规范figure创建:如果需要设置figure尺寸,在绘图前用
plt.figure()初始化,避免后续创建空figure导致所有设置失效。
内容的提问来源于stack exchange,提问作者PeterBe
相关产品推荐
相关产品推荐

