有没有一种方法可以在一个命令而不是 3 个单独的行中指定 matplotlib 图中的 x y 和 z 限制?

Is there a way to specify x y and z limits in matplotlib plots in one command instead of 3 separate lines?

我正在开发一个程序,需要在 matplotlib 中自动从 2D 绘图切换到 3D 绘图。所以我正在寻找一种方法来避免在 2 和 3d

之间做出很多 if 语句的决定

我查看了此处的帖子以及 matplotlib 文档页面,但没有找到任何内容

目前绘图轴限制使用

设置
ax.set_xlim(minvals[0],maxvals[0])  
ax.set_ylim(minvals[1],maxvals[1])

然后如果它是 3D 我有一个单独的列表

ax.set_xlim3d(min_vals[0],max_vals[0])
ax.set_ylim3d(min_vals[1],max_vals[1])
ax.set_zlim3d(min_vals[2],max_vals[2]) 

对于 2d 或 3d,有一种方法可以得到类似 ax.set_lims(min_vals, max_vals) 的东西似乎是合乎逻辑的。有办法吗?

你总是可以只定义一个函数:

def set_lims(ax, minvals, maxvals):
    ax.set_xlim(minvals[0], maxvals[0])  
    ax.set_ylim(minvals[1], maxvals[1])
    if len(minvals) == 3:
        ax.set_zlim3d(minvals[2], maxvals[2])

像这样使用方法.set(**kwargs)

ax.set(**{'xlim3d': [min_vals[0],max_vals[0]], \
          'ylim3d': [min_vals[1],max_vals[1]], \
          'zlim3d': [min_vals[2],max_vals[2]]})

通常当你想设置 属性 xxxx.set_xxxx() 时,你使用:

ax.set_xxxx(some_value)

加上我上面解释的.set(**kwargs),加上.set_xxxx(some_value)后,就变成了:

ax.set(**{'xlim3d': [min_vals[0],max_vals[0]], \
          'ylim3d': [min_vals[1],max_vals[1]], \
          'zlim3d': [min_vals[2],max_vals[2]], \
          'xxxx': some_value})