You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何绘制标记颜色随强度变化的气旋轨迹?

实现气旋轨迹标记按强度着色的方案

你已经完成了基础的气旋轨迹绘制,接下来只需要把你定义的colors字典和气旋强度数据关联起来,就能实现按强度着色的标记了,具体可以这么做:

关键修改步骤

  • 把每个气旋强度(it数组里的每个值)映射到对应的颜色,生成一个颜色列表
  • 修改plt.scatter()的参数,用这个颜色列表来设置标记的颜色(可选择边缘色或填充色,根据你的需求调整)
  • 可选:添加图例,让不同颜色对应的强度等级更清晰

修改后的完整代码片段

llons, llats = np.meshgrid(lons, lats)
x,y = map(llons,llats)
plt.style.use('seaborn-white')
clevels=[-1.6,-1.2,-0.8,-0.4,0.0,0.4,0.8]
cs = map.contourf(x,y,plt_data,clevels,cmap=plt.cm.jet)
map.colorbar(cs)
####################track##########################
import pandas as pd
df = pd.read_excel('E:/bst_trc.xls',sheet_name='1990')
latitude = df.Latitude.values[0:25]
longitude = df.Longitude.values[0:25]
it = df.Grade.values[0:25]
x,y = map(longitude, latitude)
colors = {'SUCS':'red', 'ESCS':'blue', 'SCS':'green', 'D':'black','VSCS':'orange','DD':'cyan'}

# 生成每个轨迹点对应的颜色列表,匹配强度等级
point_colors = [colors[grade] for grade in it]

# 修改scatter参数,使用对应颜色作为标记边缘色(保持填充透明,不遮挡底图)
plt.scatter(x,y, s=50, edgecolors=point_colors, facecolors='none', linewidth=2)
plt.plot(x,y,'k',linewidth=1.5 )

# 可选:添加图例,直观展示强度与颜色的对应关系
from matplotlib.patches import Patch
legend_elements = [Patch(facecolor=color, edgecolor=color, label=grade) 
                   for grade, color in colors.items()]
plt.legend(handles=legend_elements, loc='upper right', title='Cyclone Grade')

plt.show()  # 记得添加显示图像的语句

细节说明

  1. 颜色映射逻辑:通过列表推导式[colors[grade] for grade in it],把每个轨迹点的强度等级直接转换成你定义好的颜色,确保一一对应
  2. 标记样式调整:如果希望标记填充色也使用对应强度颜色,可以把facecolors=point_colors,同时移除facecolors='none';保持空心标记的话,底图的气象数据不会被遮挡,更适合叠加展示
  3. 图例优化:用Patch创建图例元素,让阅读者能快速理解不同颜色代表的气旋强度等级

这样修改后,你的轨迹标记就会根据气旋强度显示对应的颜色啦!

内容的提问来源于stack exchange,提问作者Debashis Paul

火山引擎 最新活动