如何在非线性方程组等值线图中显示更多细节
等值线图细节放大指导
我绘制了一个非线性函数系统的等值线图,希望获取图中更多细节。我确定在标记为1的环形等值线内部还有3个岛状等值线(对应局部极小值),但不清楚如何放大图形以渲染出这些细节。我刚接触Python和Jupyter Notebook,恳请相关指导。
delta = 0.025 x = np.arange(-3, 1.0, delta) y = np.arange(-3, 2.0, delta) X, Y = np.meshgrid(x, y) e1 = X*X + 2*Y*Y + np.sin(2*X) e2 = X*X + np.cos(X+5*Y) - 1.2 Z = e1**2 + e2**2 fig, ax = plt.subplots() CS = ax.contour(X, Y, Z, np.array([1, 5, 10, 50, 100])) ax.clabel(CS, inline=True, fontsize=10)
解决方法
缩小绘图范围(放大目标区域):
先定位标记1的环形等值线大致坐标区间,比如假设在x∈[-1.5, 0.5]、y∈[-1, 1],直接修改x和y的生成范围:x = np.arange(-1.5, 0.5, delta) y = np.arange(-1, 1, delta)或者在原有绘图代码末尾添加轴范围限制,无需重新生成网格:
ax.set_xlim(-1.5, 0.5) ax.set_ylim(-1, 1)增加精细等值线层级:
当前只绘制了Z=1及以上的等值线,内部岛状线对应更小的Z值,添加0.05、0.1、0.5这类数值即可渲染出细节:CS = ax.contour(X, Y, Z, np.array([0.05, 0.1, 0.5, 1, 5]))提高图像分辨率:
减小delta值(比如改成0.01),生成更密集的网格,让等值线细节更清晰:delta = 0.01组合优化示例:
把以上方法结合,直接运行下面的代码就能看到内部的3个岛状等值线:delta = 0.01 x = np.arange(-1.5, 0.5, delta) y = np.arange(-1, 1, delta) X, Y = np.meshgrid(x, y) e1 = X*X + 2*Y*Y + np.sin(2*X) e2 = X*X + np.cos(X+5*Y) - 1.2 Z = e1**2 + e2**2 fig, ax = plt.subplots() CS = ax.contour(X, Y, Z, np.array([0.05, 0.1, 0.5, 1, 5])) ax.clabel(CS, inline=True, fontsize=10) plt.show()
内容的提问来源于stack exchange,提问作者blov
相关产品推荐
相关产品推荐

