爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 4521|回复: 4

[求助] python绘图中间出现白线的问题

[复制链接]

新浪微博达人勋

发表于 2022-11-28 14:05:24 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
各位大佬,最近在哥白尼网站上下载了风场的月数据,在可视化的时候风场中间出现一条线,这个线该如何解决呢
用的是basemap的底图
下载.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2022-11-28 14:51:54 | 显示全部楼层
把脚本放出来看看才知道是什么原因撒
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2022-11-28 14:55:50 | 显示全部楼层
Nibawer 发表于 2022-11-28 14:51
把脚本放出来看看才知道是什么原因撒

import numpy as np
from matplotlib import pyplot as plt
from mpl_toolkits.basemap import Basemap
import netCDF4 as nc


file = 'F:/Data\\Wind Data\\2018-2020\\CERSAT-GLO-REP_WIND_L4-OBS_FULL_TIME_SERIE_1666701884472.nc'
data = nc.Dataset(file)
wind_u = data.variables['eastward_wind'][:, 0]  # 读取纬向速度
wind_v = data.variables['northward_wind'][:, 0]  # 读取经向速度
windspeed = data.variables['wind_speed'][:, 0]  # 读取总风速数据,数据为四维,第二维读取索引0
lat = data.variables['latitude'][:]  # 读取纬度数据
lon = data.variables['longitude'][:]  # 读取经度数据
# print(lon)
wind_u_mean = np.ma.mean(wind_u, axis=0)
wind_v_mean = np.ma.mean(wind_v, axis=0)
windspeed_mean = np.ma.mean(windspeed, axis=0)  # 通过掩码数组求出风速的平均值
wind_u_mean = np.hstack((wind_u_mean[:, 720:1440], wind_u_mean[:, 0:720]))
wind_v_mean = np.hstack((wind_v_mean[:, 720:1440], wind_u_mean[:, 0:720]))
windspeed_mean = np.hstack((windspeed_mean[:, 720:1440], windspeed_mean[:, 0:720]))  # 将风速数组进行平移,因为底图中央经度设置为180


fig = plt.figure(figsize=(10, 8), dpi=100)  # 创建画板
ax = plt.subplot(111)  # 添加子图
plt.rcParams['font.family'] = 'Times New Roman'  # 设置字体
m = Basemap(projection='cyl', lon_0=180, llcrnrlon=lon.min()+180, urcrnrlon=lon.max()+180, llcrnrlat=lat.min(), urcrnrlat=lat.max())  # 创建底图
m.fillcontinents(color='grey', alpha=0.8)  # 填充陆地
m.drawcoastlines()  # 画海岸线
m.drawmeridians(np.arange(-180, 181, 30), labels=[0, 0, 0, 1], fontsize=10, linewidth=0.8, color='silver')  # 经线
m.drawparallels(np.arange(-90, 91, 30), labels=[1, 0, 0, 0], fontsize=10, linewidth=0.8, color='silver')   # 纬线
m.imshow(windspeed_mean, cmap='jet',)  # 画图
q = m.quiver((lon+180)[::24], lat[::24], wind_u_mean[::24, ::24], wind_v_mean[::24, ::24], scale=500, width=0.002,
             headwidth=3, headlength=6)  # 画风场的矢量箭头,以24为间隔取点, scale为缩放比例,决定轴长度, width为轴宽度,后边两个参数为箭头宽度和长度
plt.quiverkey(q, 0.95, 1.05, 7, '7 m/s', labelpos='E')  # 绘制比例尺,第二个和第三个参数为比例尺位置,第四个参数为比例尺长度,第五个为比例尺标签,最后为标签的位置
cbar = m.colorbar(location='bottom', pad=0.35)  # 绘制colorbar,位于底部,距离图0.35
cbar.ax.tick_params(labelsize=10)  # 设置colorbar的刻度大小
cbar.set_label('Wind speed m/s')  # 为colorbar添加标签
plt.title('Wind field(2018-2020)', fontsize=16)  # 标题
plt.savefig('Global Wind Field Climate Patterns.png')  # 保存图片
plt.show()
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2022-11-28 14:59:23 | 显示全部楼层
Wkkkkk 发表于 2022-11-28 14:55
import numpy as np
from matplotlib import pyplot as plt
from mpl_toolkits.basemap import Basemap ...

数据链接放不出来
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-11-28 17:18:45 | 显示全部楼层
不知道是不是你数据的原因,我把脚本的后半段画图的部分跑了试下是没有问题的,建议你看下windspeed_mean = np.hstack((windspeed_mean[:, 720:1440], windspeed_mean[:, 0:720]))这段代码前后的数据在180度纬线附近有没有变化
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表