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

如何为Matplotlib自定义变换网格设置坐标轴范围

如何在Matplotlib自定义坐标变换后设置坐标轴范围

要精准设置自定义变换后的坐标轴范围(即实际数据空间的范围),你需要把目标数据范围通过自定义的变换函数转换为set_xlim/set_ylim能识别的内部坐标范围,具体步骤如下:

修改后的完整代码

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.axisartist import (SubplotHost, GridHelperCurveLinear)

fig = plt.figure()

def tr(x, y): 
    return np.log10(x) + np.log10(y), np.log10(y) - np.log10(x)
def inv_tr(x, y): 
    return 10 ** ((x - y) / 2), 10 ** ((x + y) / 2)

grid_helper = GridHelperCurveLinear((tr, inv_tr))
axis = SubplotHost(fig, 111, grid_helper=grid_helper)
fig.add_axes(axis)

# 定义你想要的实际数据范围(变换后的坐标轴范围)
target_x_min, target_x_max = 0.1, 15
target_y_min, target_y_max = 2, 20

# 将目标数据范围的边界点转换为内部坐标
X1, Y1 = tr(target_x_min, target_y_min)
X2, Y2 = tr(target_x_min, target_y_max)
X3, Y3 = tr(target_x_max, target_y_min)
X4, Y4 = tr(target_x_max, target_y_max)

# 设置内部坐标的范围,对应实际数据的目标范围
axis.set_xlim(min(X1, X2, X3, X4), max(X1, X2, X3, X4))
axis.set_ylim(min(Y1, Y2, Y3, Y4), max(Y1, Y2, Y3, Y4))

axis.grid(True)
plt.show()

原理说明

  • set_xlim和set_ylim作用的是坐标变换后的内部坐标空间(也就是tr函数输出的(X,Y)值),而非原始数据空间的(x,y)。
  • 我们通过将目标数据范围的四个边界点代入自定义变换函数tr,得到内部坐标的极值,再用这些极值设置坐标轴范围,就能精准控制图形显示的实际数据区域。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 19:03:35