【问题标题】:setting axis scale in matplotlib contour plot在 matplotlib 等高线图中设置轴比例
【发布时间】:2018-01-11 13:27:20
【问题描述】:

我根据 FEM 程序的输出在 matplotlib 中生成等高线图,该程序给出节点坐标及其相应的状态参数,如下所示:

x = [x1,x2,x3,...,xn] y = [y1,y2,y3,...,yn] z = [z1,z2,z3,...,zn]

z 是一个列表。

等高线图生成如下

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.mlab as ml

#paste data extraction routine here to generate list for x, y and z

xi = np.linspace(min(x),max(x),len(x))
yi = np.linspace(min(y), max(y), len(y))
zi = ml.griddata(x,y,z,xi,yi, interp = 'linear')

plt.figure()
contourplot = plt.contourf(xi,yi,zi, cmap=plt.cm.bone,
                  origin='lower')
cbar = plt.colorbar(contourplot)
plt.axis('equal')
plt.show()

我得到的等高线图取决于倒数第二行plt.axis('equal')

如果我包含该行,我会得到:

如果我不包含该行,我会得到:

该图描绘了土壤层的变形,我想确保它按比例绘制,并且我可以控制生成的图像大小。

第一个图是按比例绘制的(即轴是相同的比例),但它没有占据整个图。

第二个图不是按比例的,而是占了整个图。

我想确保获得正确的比例图像。我可以以这种方式控制轴吗?谢谢

【问题讨论】:

  • 我想你正在寻找plt.axis('scaled')。否则,明确设置 x 和 y 限制应删除第一个示例中的额外空格。
  • 做到了。你为什么不发表你的评论作为答案。我认为它可以完成这项工作
  • 是的,它完成了这项工作,但我同意@ImportanceOfBeingEarnest 的观点,即明确地而不是通过plt 隐式地作用于轴对象会更干净。我认为你应该接受他的回答。

标签: python matplotlib plot contour


【解决方案1】:

你可能想使用

plt.gca().set_aspect("equal")

而不是plt.axis('equal')。结果看起来像

然后您还可以使用图形大小和边距,例如

plt.figure(figsize=(8,2))
# ...
plt.tight_layout()

会导致

【讨论】:

  • 看起来代码“plt.figure(figsize=(8,2))”不符合原始代码,因为这里使用的是“figure”而不是“contour”。
  • 有什么办法可以任意选择轮廓尺寸?
猜你喜欢
  • 2014-09-09
  • 2017-09-03
  • 1970-01-01
  • 1970-01-01
  • 2018-07-19
  • 1970-01-01
  • 2018-10-08
  • 2012-03-25
  • 1970-01-01
相关资源
最近更新 更多