在matplotlib等高线图

时间:2018-01-11 13:27:20

标签: python matplotlib plot contour

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

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')

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

enter image description here

如果我不包括该行,我会得到这个:

enter image description here

该图描绘了土壤层中的变形,我想确保它按比例绘制,并且我可以控制图像的最终尺寸。

第一个数字是缩放(即轴是相同的比例),但可以看出它没有占据整个数字。

第二个数字不是按比例绘制,而是占据整个数字。

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

1 个答案:

答案 0 :(得分:1)

您可能想要使用

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

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

enter image description here

然后你也可以玩数字大小和边距,例如

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

会导致

enter image description here