在 matplotlib 等高线图中设置轴刻度
setting axis scale in matplotlib contour plot
我根据 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.gca().set_aspect("equal")
而不是 plt.axis('equal')
。结果看起来像
然后您还可以调整图形大小和边距,例如
plt.figure(figsize=(8,2))
# ...
plt.tight_layout()
会导致
我根据 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.gca().set_aspect("equal")
而不是 plt.axis('equal')
。结果看起来像
然后您还可以调整图形大小和边距,例如
plt.figure(figsize=(8,2))
# ...
plt.tight_layout()
会导致