You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对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()自动调整元素间距,避免标签被图表边缘截断。

可选进阶优化

  • 若需保留完整数值但优化格式,可改用千分位分隔显示:
    plt.gca().yaxis.set_major_formatter(mticker.StrMethodFormatter('{x:,.0f}'))
    
    此时6000000会显示为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 10:30:53