Python绘制风场图报错的问题怎么解决
Admin 2022-05-21 群英技术资讯 705 次浏览
目前,在使用python处理一个nc文件绘制一个风场图时,出现了以下报错
虽然图片画出来了,但是很丑而且没有理想的填充颜色!
但是不知道为啥,但是参考画图过程,分析这个其中的Z应该指的绘制等高线中的这个函数:matplotlib.pyplot contourf 中使用到的Z!
而这个函数的用法为
coutour([X, Y,] Z,[levels], **kwargs)
在这里提出,matplotlib.pyplot contourf 是用来绘制三维等高线图的,不同点是contour()是绘制轮廓线。而contourf()则会填充轮廓。除非有其他说明,否则两个版本的函数是相同的。
参数 | ||
X,Y | 数组,可选 | 是在Z中的坐标值。 当X,Y,Z都是二维数组时,它们的形状必须相同,若是一维数组,则X的长度为Z的列数,Y的长度为Z的行数,一般来说创建numpy.meshgrid() |
Z | 类似矩阵 | 是绘制轮廓的高度值 |
levels | int或类似数组,可选 | 用来确定轮廓线\区域的数量和位置 |
aalpha | float,可选 | alpha混合值,介于0(透明)和1(不透明)之间。 |
cmap | str或colormap,可选 | Colormap用于将数据值(浮点数)从间隔转换为相应Colormap表示的RGBA颜色。用于将数据缩放到间隔中看 。 |
很显然,在这个函数用法中,如果要画出等高线,核心函数就是plt.contourf(),但在这个函数中输入的参数是x,y对应的网格数据以及此网格对应的高度值,因此我们调用np.meshgrid(x,y)把x,y值转换成网格数据:
import numpy as np import pandas as pd import matplotlib.pyplot as plt # 计算x,y坐标对应的高度值 def f(x, y): return (1-x/2+x**3+y**5) * np.exp(-x**2-y**2) # 生成x,y的数据 n = 256 x = np.linspace(-3, 3, n) y = np.linspace(-3, 3, n) # 把x,y数据生成mesh网格状的数据,因为等高线的显示是在网格的基础上添加上高度值 X, Y = np.meshgrid(x, y) # 填充等高线 plt.contourf(X, Y, f(X, Y)) # 显示图表 plt.show()
于是我分析了我的代码中的contourf中对应的X,Y和Z,才发现果然问题出现在这里:
cp=ax.contourf(lon,lat,ws[i,::],zorder=0,transform=ccrs.PlateCarree(),cmap=cmap,levels=levels,extend='both')
这段代码在完成三维数组的绘制时完全没有问题,但是不巧的是,我这次绘制的是四维数组,而其中的ws[i,::]则未取定其中的两维,使得该Z=ws[i,::],理论上来说属于一个三维的数组,所以才会报错。
而我们只需要把这个四维数组取定其中的两维,使得该Z属于一个二维数组即可,已知我的数据中第二维为我恰好需要将之取定为500hpa,所以将这句代码改为:
cp=ax.contourf(lon,lat,ws[i,0,::],zorder=0,transform=ccrs.PlateCarree(),cmap=cmap,levels=levels,extend='both')
霍!这不就画出来了嘛!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要介绍了搭建Pytorch 和 Tensorflow v1 兼容的环境,本文是小编经过多次实践得到的环境配置教程,给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
内容介绍0.学习目标1.双向链表简介1.1双向链表介绍1.2双向链表结点类1.3双向链表优缺点2.双向链表实现2.1双向链表的初始化2.2获取双向链表长度2.3读取指定位置元素2.4
一、安装此处以Ubuntu12.04为例:$sudoapt-getinstallipythonpython-matplotlibpython-numpy二、简单实例>>>importmatplotlib.pyplotasplt>>>>>>plt.figure(1)
同时运行多个线程类似于同时运行多个不同的程序,但具有以下好处 :进程内的多个线程与主线程共享相同的数据空间,因此可以比单独的进程更容易地共享信息或彼此进行通信。线程有时也被称为轻量级进程,它们不需要太多的内存开销; 它们比进程便宜。
这篇文章主要为大家详细介绍了python实现水印图片功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008