【问题标题】:how to change the shape of a contour in matplotlib如何在 matplotlib 中更改轮廓的形状
【发布时间】:2014-10-16 21:47:47
【问题描述】:

我在matplotlib 中使用contourcontourf

数据是一个二维数组,其中包含值,如下所示:

1 2 3 3 3
2 3 3 4 1
2 3 4 5 6
...

我得到的结果如下。

它就像一个正方形,而实际上,y 范围是 600+,x 范围只有 350。 所以这个图形应该看起来像一个矩形,而不是一个正方形。

但我查看了contourcontourf 中的参数,没有关于更改轮廓形状或更改轴长度的参数。

对于 Adob​​e,这是我案例的简化代码:

将 matplotlib.pyplot 导入为 plt

m = [[1,2,3,4],
[2,3,4,5],
[2,2,1,5]]

print m
plt.contourf(m)
plt.show()

那么,在这种情况下,如何使用ax.axis()?

【问题讨论】:

标签: python matplotlib axis contour contourf


【解决方案1】:

可能你想设置相等的比例:

ax.axis('equal')

编辑

这是你的代码:

#!/usr/bin/python3

from matplotlib import pyplot as plt

m = [[1,2,3,4],
     [2,3,4,5],
     [2,2,1,5]]

fig = plt.figure()
ax = fig.add_subplot(111)

ax.contourf(m)
ax.axis('equal')

fig.savefig("equal.png")

matplotlib 有三个接口。下面是为利用它们而编写的相同代码:

  1. 机器状态:

    import matplotlib.pyplot as plt
    import numpy as np
    x = np.arange(0, 10, 0.2)
    y = np.sin(x)
    plt.plot(x, y)
    plt.show()
    
  2. pylab:

    from pylab import *
    x = arange(0, 10, 0.2)
    y = sin(x)
    plot(x, y)
    show()
    
  3. 面向对象:

    import matplotlib.pyplot as plt
    import numpy as np
    x = np.arange(0, 10, 0.2)
    y = np.sin(x)
    fig = plt.figure()
    ax = fig.add_subplot(111)
    ax.plot(x, y)
    plt.show()
    

我更喜欢面向对象的界面:它可以完全控制正在发生的事情。我引用了那个解决方案。

【讨论】:

  • 谢谢你,但我必须导入哪个库吗?它不起作用可能是因为我需要做其他事情,但这确实帮助我找到了解决方案,谢谢。
  • @rankthefirst:我不知道——除非您发布最小的工作示例来重现您的问题。您不应该为此解决方案导入任何内容。但是 Yo 可能使用了 pylab 接口,而我发布了一个使用 pyplot 接口测试的解决方案。见here
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-08
  • 2022-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多