本节提要:如何在python中使用天气符号。
天气符号是气象应用上很常见的一种符号,不过好像还没有人写过怎么在python进行可视化绘图上使用这些符号。这里我们简单介绍一下。在我们最开始学习使用matplotlib库包绘图的时候,新手很容易遇到text时候跳出大面积的黑框框。这是因为matplotlib默认只加载英文。一般来说我们建议添加如下语句以解决这个问题:plt.rcParams['font.sans-serif']=['FangSong'] 这里指定全局字体为仿宋。这个指定的前提是,你的电脑上必须安装该种字体。假设我电脑没有安装仿宋而只有黑体,则同样无法使用。 另外一种方法是通过FontProperties参量,导入某种字体。比如,我们导入本地电脑已经安装好的仿宋GB2312这种字体。一般在c盘下windows文件夹下有一个Fonts文件夹,打开后呈现如此界面:
随后浏览到GB2312字体下,打开属性,复制路径。然后以font参数的形式传入text类命令中:
from matplotlib.font_manager import FontProperties font=FontProperties(fname=r'C:\Users\Windows\Fonts\仿宋GB2312.ttf') ax.text(3,3,'仿宋GB2312',color='r',font=font)

二、天气符号字体
这里我们使用气象家园上分享的字体符号WeatherSymbol.ttf,下载后安装到本地电脑。由于WeatherSymbol字体只存有天气符号,所以你输入a字母,将不会打印出a,而是a指定的天气符号。例如字母a与右方括号] font=FontProperties(fname=r'C:\Users\Windows\Fonts\WeatherSymbol.ttf') ax.text(3,3,'a',color='r',font=font) ax.text(2,3,']',color='r',font=font)

我们可以试试大写小写字母各代表的什么天气符号。
font=FontProperties(fname=r'C:\Users\Windows\Fonts\WeatherSymbol.ttf') letter_list=list('abcdefghijklmnopqrstuvwxyz') LETTER_list=list('abcdefghijklmnopqrstuvwxyz'.upper()) all_list=letter_list+LETTER_list array=np.array(all_list[:-2]).reshape(10,5) for i in range(array.shape[0]): for j in range(array.shape[1]): ax.text(i,j,array[i,j],font=font)

三、如何全使用天气符号
经过分析,发现一些符号在键盘上是无法输出的,这时,我们可以借助windows的字符映射表功能。 在搜索栏中搜索并打开字符映射表,切换到WeatherSymbol字体下: 
点击要打印的天气符号,这里举例雷暴

然后点击选择按钮,并点击复制按钮: 
回到程序中,将复制到的内容粘贴到text里,这时跳出无字体方框,不用管它,直接运行: ax.text(3,3,'',color='r',font=font)

四、在地图上的使用
与matplotlib里的使用方法类似,只需添加投影变换参数即可。 ax.text(108.5,29.85,'I',color='b',font=font,transform=ccrs.PlateCarree()) ax.text(108.8,30.3,'E',color='b',font=font,transform=ccrs.PlateCarree()) ax.text(108.95,30.2,'D',color='b',font=font,transform=ccrs.PlateCarree())

若要使用天气符号,必须指定字体,否则会调回全局字体变量。
|