如何对Python折线图Y轴数值取整并优化图表美观度
解决Matplotlib折线图Y轴长数值显示问题及图表优化方案
一、修复Y轴长数值显示
Y轴出现6000000这类长数值时,可通过自定义刻度格式化工具将其转为简洁的整数形式(配合Y轴标签MM表示百万单位),解决显示拥挤问题:
修改后的完整代码
import pandas as pd import matplotlib.pyplot as plt import matplotlib.ticker as mticker import numpy as np # 全局字体配置 plt.rcParams.update({'font.size': 16, 'font.family': 'Arial'}) plt.ticklabel_format(style='plain', axis='x', useOffset=False) # 读取数据 df = pd.read_csv("Z:/a.csv", delimiter=",") # 绘制折线图 plt.plot(df['A'], df['B'], marker='o', linewidth=2, color='#1f77b4', markersize=8, label='MM Value') # 自定义Y轴刻度:将数值转为百万单位的整数 def format_y(x, pos): return f'{int(x / 1_000_000)}' plt.gca().yaxis.set_major_formatter(mticker.FuncFormatter(format_y)) # 坐标轴设置 plt.xlabel('Epochs', fontweight='bold') plt.ylabel('MM (Millions)', fontweight='bold') # 明确标注单位含义 plt.xticks(np.arange(0, 21, 2)) plt.legend() # 图表美观优化 plt.grid(True, linestyle='--', alpha=0.6, axis='y') # 仅显示Y轴网格,辅助读数不干扰主体 ax = plt.gca() ax.spines['top'].set_visible(False) # 隐藏顶部边框 ax.spines['right'].set_visible(False) # 隐藏右侧边框 plt.tight_layout() # 自动调整布局,避免标签截断 plt.show()
二、图表美观度优化细节
- 数值简化:通过
FuncFormatter将大数值按百万单位转换,配合明确的Y轴标签,彻底解决长数值显示混乱问题。 - 视觉层次:隐藏冗余的顶部、右侧边框,仅保留必要坐标轴;添加低透明度虚线网格,辅助数据读取但不抢主体折线的注意力。
- 元素强化:指定专业色系的折线颜色、增大标记尺寸、添加图例,让数据系列更清晰;坐标轴标签加粗,提升可读性。
- 布局适配:用
plt.tight_layout()自动调整元素间距,避免标签被图表边缘截断。
可选进阶优化
- 若需保留完整数值但优化格式,可改用千分位分隔显示:
此时6000000会显示为plt.gca().yaxis.set_major_formatter(mticker.StrMethodFormatter('{x:,.0f}'))6,000,000。 - 数据点较少时,可添加数值标签增强信息传递:
for x, y in zip(df['A'], df['B']): plt.text(x, y, f'{int(y/1e6)}', ha='center', va='bottom', fontsize=14)
内容的提问来源于stack exchange,提问作者user12
相关产品推荐
相关产品推荐

