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



我正在开发一个程序,该程序需要在matplotlib中自动从2D切换到3D绘图。所以我正在寻找一种方法,没有很多 if 语句来决定 2 和 3d

我查看了这里的帖子以及 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(的东西似乎是合乎逻辑的。有没有办法做到这一点?

使用方法.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]]})

通常,当您想使用 .set_xxxx() 设置属性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})

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

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])

最新更新