如何使用Matplotlib绘制指定范围等高线并显示7-8位小数精度标注
你可以通过指定plt.contour的levels参数限定绘制等高线的数值范围,同时修改clabel的格式参数实现8位小数的精度标注,修改后的代码如下:
import numpy as np import matplotlib.pyplot as plt khmax = np.arange(0,np.pi,0.01) Ncmax = np.arange(0,np.pi,0.01) [X, Y] = np.meshgrid(Ncmax,khmax) fig, ax = plt.subplots() # 定义目标等高线范围,可根据需求调整区间内等高线的生成数量 min_level = 0.99999999 max_level = 1.00000001 # 这里设置生成10个等间距的等高线值,数值越大等高线越密集 target_levels = np.linspace(min_level, max_level, 10) # 传入levels参数仅绘制指定范围的等高线 contour = plt.contour(X,Y,mod_G, levels=target_levels) ax.set_title('magnitude of G') ax.set_xlabel('Ncmax') ax.set_ylabel('khmax') # fmt调整为%1.8f即可显示8位小数精度 ax.clabel(contour, inline= True, inline_spacing = -1,fmt = '%1.8f',fontsize=8) plt.show()
如果需要自动适配mod_G原始等值区间内的所有可选值,可以用如下方式过滤得到目标水平值:
# 先获取默认生成的所有等高线水平 all_levels = plt.contour(X,Y,mod_G).levels # 过滤出落在目标区间内的水平值 target_levels = all_levels[(all_levels >= 0.99999999) & (all_levels <= 1.00000001)] # 再传入levels参数绘制 contour = plt.contour(X,Y,mod_G, levels=target_levels)
内容的提问来源于stack exchange,提问作者Avii
相关产品推荐
相关产品推荐

