Matplotlib绘图x轴显示全部刻度、灰色背景的解决方法
Matplotlib绘图问题解决方案
1. X轴刻度过密问题
你当前代码中plt.xticks(list(range(1, 72)))会强制将1~71的所有整数设为X轴刻度,这是刻度过多的直接原因。
- 手动指定显示刻度:直接替换上述代码,按需设置步长即可,例如每10个Epoch显示一个刻度:
plt.xticks(list(range(0, 72, 10)), fontsize=40)
- 自动适配刻度间隔:如果希望程序自动计算合理刻度,可以删除手动设置刻度的代码,或使用刻度定位器统一配置:
from matplotlib.ticker import MultipleLocator ax = plt.gca() # X轴每10个单位生成一个主刻度 ax.xaxis.set_major_locator(MultipleLocator(10))
2. 背景与轮廓样式调整
灰色背景是Matplotlib默认样式导致的,添加以下配置即可实现白色背景+黑色轮廓效果:
ax = plt.gca() # 设置绘图区背景为白色 ax.set_facecolor("white") # 设置所有坐标轴轮廓为黑色,可按需调整线宽 for spine in ax.spines.values(): spine.set_color("black") spine.set_linewidth(2) # 设置整张画布背景为白色 plt.gcf().set_facecolor("white")
修改后完整代码
import matplotlib.pyplot as plt from matplotlib.ticker import MultipleLocator # 全局配置 plt.rcParams["figure.figsize"] = (60,30) plt.figure() # 坐标轴样式配置 ax = plt.gca() ax.set_facecolor("white") for spine in ax.spines.values(): spine.set_color("black") spine.set_linewidth(2) plt.gcf().set_facecolor("white") # 网格配置 plt.grid(True, color='gray', linestyle='dashed', linewidth=0.5, axis='y') # 绘制曲线 plt.plot(df_stats['Training Loss'], color='b', marker='.', linestyle='solid', mec='b', markersize=24, markerfacecolor='white', label="Training", linewidth=7) plt.plot(df_stats['Valid. Loss'], color='g', marker='.', linestyle='solid', mec='b', markersize=24, markerfacecolor='white',label="Validation", linewidth=7) # 图表标注配置 plt.title("Training & Validation Loss",fontsize=60) plt.xlabel("Epoch", fontsize=52) plt.ylabel("Loss", fontsize=52) plt.legend(fontsize=50) # 刻度配置 plt.xticks(list(range(0, 72, 10)), fontsize=40) plt.yticks(fontsize=40) plt.show()
调整刻度密度时,修改
range(0,72,10)中的第三个步长参数即可,步长越大,显示的刻度数量越少。
内容的提问来源于stack exchange,提问作者Rachele Franceschini
相关产品推荐
相关产品推荐

