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

如何用简洁优雅的方式交换Matplotlib图表的坐标轴与标签?

一行代码实现Matplotlib图表数据与标签的轴交换?

Matplotlib本身没有内置直接交换数据、标签的swapaxes函数,但可以通过自定义简洁工具函数,或一行链式调用实现需求:

方案1:自定义复用函数(推荐)

这个函数可处理单条或多条曲线的轴交换,同步更新标签和刻度范围:

def swap_axes(ax):
    # 交换所有曲线的x/y数据
    for line in ax.lines:
        line.set_data(*reversed(line.get_data()))
    # 交换坐标轴标签、刻度范围
    ax.set_xlabel(ax.get_ylabel()), ax.set_ylabel(ax.get_xlabel())
    ax.set_xlim(ax.get_ylim()), ax.set_ylim(ax.get_xlim())
    ax.figure.canvas.draw()

结合你的示例代码,调用只需一行:

import numpy as np
import matplotlib.pyplot as plt

height = np.linspace(40,100,100)
weight = 3.0*height

# 生成初始图表
fig = plt.figure()
ax  = fig.gca()
ax.plot(height,weight)
ax.set_xlabel('height')
ax.set_ylabel('weight')

# 一行完成交换
swap_axes(ax)

plt.show()

方案2:极简一行链式调用(单曲线场景)

如果图表只有一条曲线,可用这行代码直接完成所有操作:

ax.lines[0].set_data(*reversed(ax.lines[0].get_data())), ax.set_xlabel(ax.get_ylabel()), ax.set_ylabel(ax.get_xlabel()), ax.set_xlim(ax.get_ylim()), ax.set_ylim(ax.get_xlim())

两种方案都能让初始图表完全变成目标样式,自定义函数更易读、可复用,适合多曲线场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 12:06:28