【发布时间】:2015-01-26 07:57:55
【问题描述】:
我想绘制一系列等高线,但是标签所在的位置和线之间的间距会随着页面的增加而增加。我已经绘制了一个附加的示例。我不想要小数点,因此使用 fmt,但这似乎改变了不同点的间距(理想情况下,我希望等高线断点和书写之间有大约半厘米的间隙。
顺便说一句,我还尝试使用手动位置,以便将每个标签绘制在某个位置,但由于有两条具有相同值的单独等高线,我不确定这是否可行。谢谢!
这是我的代码;
from netCDF4 import Dataset
import numpy as np
from matplotlib import pyplot as plt
#############################
# #
# Parameter Setup #
# #
#############################
myfile = '/home/ubuntu/Documents/Control/puma/run/Control.nc' #Control U
myfile2 = '/home/ubuntu/Documents/Control_Trop_40K/puma/run/ControlTrop.nc' #Perturbed U
Title = 'U'
Units = '!U'
Variable = 'ua'
#############################
#############################
Import = Dataset(myfile, mode='r')
Import2 = Dataset(myfile2, more='r')
latt = Import.variables['lat'][:]
level = Import.variables['lev'][:]
UControl = Import.variables[Variable][:]
#UPerturbed = Import2.variables[Variable][:]
#UChange = UPerturbed - UControl
#UChange = np.mean(UChange[:,:,:,0], axis=0)
UControl = np.mean(UControl[:,:,:,0], axis=0)
Contourrange = [10]
CS=plt.contour(latt,level,UControl,Contourrange, colors='k')
plt.clabel(CS, fontsize=10, inline=1,fmt = '%1.0f',ticks=Contourrange)
plt.gca().invert_yaxis()
plt.yscale('log', nonposy='clip')
plt.xticks(np.round((np.arange(-90, 91, 30)), 2))
plt.xlim(xmin=-90)
plt.yticks([900,800,700,600,500,400,300,200,100,50])
plt.gca().set_yticklabels([900,800,700,600,500,400,300,200,100,50])
plt.xlabel('Latitude')
plt.ylabel('Pressure (hPa)')
plt.title(Title)
plt.show()
图片如下:
【问题讨论】:
-
Edit = 我发现了 inline_spacing,这有帮助,但它似乎仍然在图表的较高位置更加分离(可能是因为它是对数轴)
-
您看过
plt.clabel的inline_spacing参数吗?我认为这可以控制您要执行的操作。 -
我手动设置了这个,但它似乎并没有始终如一地设置正确的像素数量 - 靠近顶部的值仍然间隔更大
-
将此参数设置为 6,并添加更多行,它仍然将这些行间隔更多onedrive.live.com/redir?resid=4A445014A6259A95%2149415
标签: python matplotlib contour