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

2024-09-27 21:26:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一个程序,需要在matplotlib中自动从二维图切换到三维图。因此,我正在寻找一种方法,不需要太多的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(minvals,max\vals)这样的方法似乎是合乎逻辑的。有办法吗


Tags: 方法文档程序if关系matplotlib语句ax
2条回答

你可以定义一个函数:

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

通常,当您想用.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})

相关问题 更多 >

    热门问题