PyQt5与matplotlib与basemap结合的案例

主要是为了写个代码,以后用得着时可以直接调用,文件里的类直接继承QWidget,可以作为部件放入Layout中,省的以后还要麻烦重复的写代码。本人气象行业,会用到地图叠加风羽。

代码附带examples下载:https://download.csdn.net/download/weixin_42359147/10559570


主要实现了以下功能:

  1. 绘制正常的折线或散点图(可以多条折线)
  2. 绘制色斑图(等高线图)
  3. 将数组显示为图片(主要是自己要用于卫星云图显示)
  4. 利用basemap,在地图地图上添加风羽(风杆)
  5. 案例中采用随机数模拟数据,实现绘图动态更新

暂时先实现这些功能,方便再写界面的时候直接调用。basemap没有python3.6版本的,所以用的是非官方包。

文件说明:

一、总体说明
A、类
文件里分为两个类:PlotWidget和PlotGeoWidget文件里分为两个类:PlotWidgetPlotGeoWidget
B、用到的库
1、matplotlib(2.0.2)
2、PyQt5(5.6)
3、basement(第三方非官方包)
4、numpy(1.14.5)
5、math(python自带)

二、PlotWidget类
A、描述
该类作为一个独立的QWidget部件,可以直接放入Layout中作为一个普通部件
B、方法
1、plot_lines
功能:绘制线型图像(可多条曲线)
def plot_lines(self, x_data, y_data, xlim=None, ylim=None, linestyle=['-'], linewidth=[2], linecolor=['black'],
xticks=None, xlabels=None, x_labels_rotation=0, x_labels_fontsize=20,
yticks=None, ylabels=None, y_labels_rotation=0, y_labels_fontsize=20,
x_name=None, y_name=None, title=None, label=[None], label_loc='upper right')

参数解释:
x_data、y_data:
要画的数据 必须在数据外面再套一个[],应为可能会容纳多组数据
例如只有一组数据[1,2,3,4,5],也需要在外面加上[]变成[[1,2,3,4,5]]
xlim、ylim:
坐标轴范围,元组类型
例如:(0,100)
linestyle、linewidth、linecolor:
线型线宽线色,列表
列表里每个元素都是按照matplotlib的线型线宽线色来表示
xticks、yticks:
坐标轴上要显示的刻度位置,列表类型
例如:[0,10,20,30] 代表在只显示10 20 30的刻度
xlabels、ylabels:
坐标轴上显示刻度位置要显示的文字,列表类型
前提是必须有xticks、yticks
例如:当xticks=[0,10,20,30]时,xlabels=[‘x’, ‘xx’, ‘xxx’, ‘xxxx’]代表在0 10 20 30 刻度处显示’x’, ‘xx’, ‘xxx’, ‘xxxx’文字
x_labels_rotation、x_labels_fontsize、y_labels_rotation、y_labels_fontsize:
坐标轴上文字旋转角度和文字大小
x_name、y_name:
坐标轴标注
title:
图片题名
label:
图注,列表类型
label_loc:
图注位置,按照matplotlib图注规范
2、plot_contour
功能:画等值线图
def plot_contour(self, x_data, y_data, val, title=None, x_name=None, y_name=None,
xticks=None, xlabels=None, x_labels_rotation=0, x_labels_fontsize=20,
yticks=None, ylabels=None, y_labels_rotation=0, y_labels_fontsize=20)

参数解释:
x_data、y_data、val:
要画的数据(x,y,z值)
title:
图片题名
x_name、y_name:
坐标轴标注
xticks、yticks:
坐标轴上要显示的刻度位置,列表类型
xlabels、ylabels:
坐标轴上显示刻度位置要显示的文字,列表类型
x_labels_rotation、x_labels_fontsize、y_labels_rotation、y_labels_fontsize:
坐标轴上文字旋转角度和文字大小
3、plot_digital_image
功能:显示数字图像,如云图、照片等,但是需要先将图片转为数组
def plot_digital_image(self, img)
参数解释:
img:
图片的数组
三、PlotGeoWidget
A、描述
该类作为一个独立的QWidget部件,可以直接放入Layout中作为一个普通部件
B、方法
1、map_wind
功能:显示本场周边地区地图,在地图上画出风杆
def map_wind(self, lon, lat, spe, dir)
参数解释:
lon、lat:
经纬度,以小数表示
spe、dir:
风速风向

猜你喜欢

转载自blog.csdn.net/weixin_42359147/article/details/81196369
今日推荐