我正在开发一个程序,该程序需要在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])