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

Python Matplotlib绘图:为DataFrame图表添加新坐标轴及自定义刻度

解决方案

嘿,这就帮你把图表改成你想要的样子!我把完整的可运行代码和每个改造点的细节解释都整理好了👇

完整代码

import pandas as pd
import matplotlib.pyplot as plt

# 初始化你的DataFrame
df = pd.DataFrame(
    data=[
        [20,69.262295,0.458615,244],
        [40,52.049180,0.105605,488],
        [60,37.380628,0.037798,733],
        [80,28.659161,0.018166,977],
        [100,23.013923,0.004136,1221]
    ],
    columns=['percentage','confidence','threshold','size']
)

# 创建主画布和主坐标轴
fig, ax1 = plt.subplots(figsize=(8, 5))

# 绘制主折线图:Percentage vs Confidence
line1, = ax1.plot(df['percentage'], df['confidence'], color='#1f77b4', marker='o', label='Confidence')

# 改造1:替换主坐标轴刻度为DataFrame中的值
ax1.set_xticks(df['percentage'])  # X轴刻度用DataFrame的percentage列
ax1.set_yticks(df['confidence'])  # Y轴(Confidence)刻度用DataFrame的confidence列
ax1.set_xlabel('Percent of Population', fontsize=10)
ax1.set_ylabel('Confidence', fontsize=10, color='#1f77b4')
ax1.tick_params(axis='y', labelcolor='#1f77b4')

# 改造2:添加左侧Y轴对应Threshold值
ax2 = ax1.twinx()  # 创建共享X轴的双Y轴
line2, = ax2.plot(df['percentage'], df['threshold'], color='#ff7f0e', marker='s', label='Threshold')
ax2.set_yticks(df['threshold'])  # 左侧Y轴刻度用DataFrame的threshold列
ax2.set_ylabel('Threshold', fontsize=10, color='#ff7f0e')
ax2.tick_params(axis='y', labelcolor='#ff7f0e')

# 改造3:添加顶部X轴对应Size值
ax3 = ax1.twiny()  # 创建共享Y轴的双X轴
ax3.set_xticks(df['percentage'])  # 顶部X轴刻度位置和主X轴对齐
ax3.set_xticklabels(df['size'])  # 刻度文本替换为DataFrame的size列
ax3.set_xlabel('Size', fontsize=10)

# 合并图例,提升可读性
fig.legend([line1, line2], ['Confidence', 'Threshold'], loc='upper right', bbox_to_anchor=(1.2, 1))

# 调整布局,避免标签被截断
plt.tight_layout()
plt.show()

关键改造点说明

  • 替换坐标轴刻度:通过set_xticks()和set_yticks()直接指定DataFrame中的列值,彻底替换Matplotlib自动生成的刻度,确保完全匹配你的数据。
  • 左侧新增Threshold Y轴:用twinx()创建和主X轴共享的双Y轴,这样每个Percentage对应的Threshold值会精准对齐;用不同颜色区分两个Y轴,避免视觉混淆。
  • 顶部新增Size X轴:用twiny()创建和主Y轴共享的双X轴,先让顶部X轴的刻度位置和主X轴完全一致,再把显示的文本替换成对应的Size值,完美实现Percentage和Size的一一映射。
  • 额外优化:添加了标记点(圆形/方形)、颜色区分和图例,让图表更直观;最后用tight_layout()自动调整布局,防止标签被画布截断。

内容的提问来源于stack exchange,提问作者gabboshow

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:40:28