【问题标题】:How to loop strings in Python/Matplotlib?如何在 Python/Matplotlib 中循环字符串?
【发布时间】:2020-09-26 05:03:13
【问题描述】:

我有一个在 Matplotlib 中常见的实际问题,我将不得不写很多次

ax.set_xlim([-5, 5])
ax.set_ylim([-5, 5])
ax.set_zlim([0, 5])

我想知道有没有办法遍历它们?

我搜索了一种可能的循环它们的方法是使用eval()。但我还没有弄清楚它可以用它来完成。

有没有一种巧妙的循环方式?谢谢!

【问题讨论】:

  • 这是三个不同的函数,有 3 个不同的输入(在这种情况下是 2 个唯一的)...编写一个循环实际上几乎肯定会比这更多的代码,或者至少在另一个中包含基本上完全相同的代码形式...循环是什么意思?
  • 因为在任何情况下您都需要为所有三个轴提供上限和下限,所以无论您想出什么,仍然会有 6 个输入 - 您可以编写一些允许您设置所有限制的内容一口气,类似于ax.set_lims([-5, 5], [-5, 5], [0, 5]),但我认为这一切都不是那么清楚。您需要多久为您的轴设置一次您认为值得付出努力的限制?

标签: python string loops matplotlib


【解决方案1】:

如果这就是你所做的一切,那么每次都输入它可能是最简单的。 通过一次调用设置 x 和 y 限制,您可以节省一点打字时间,但会造成一些清晰度的损失;但 z 限制保持独立:

ax.axis([xmin, xmax, ymin, ymax])
ax.set_zlim([zmin, zmax])

如果您经常这样做,您可以创建一个实用程序模块,并开始为您经常使用的代码 sn-ps 收集函数。

例如您可能会发现使用单个函数来创建 3D 投影并设置限制和标签很有用:

def setup3d(fig, lims=None, labels=None):
    ax = fig.gca(projection='3d')
    if lims:
        ax.set_xlim(*lims[0:2])
        ax.set_ylim(*lims[2:6])
        ax.set_zlim(*lims[4:6])
    if labels:
        ax.set_xlabel(labels[0])
        ax.set_ylabel(labels[1])
        ax.set_zlabel(labels[2])
    return ax

fig = plt.figure()
ax = setup3d(fig, [-2, 2, 1, 5, -5, 5], ['my X', 'YYY' ,'Z'])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多