Python可视化 | 热带气旋统计分析-环状图
前言Python中常用来表示百分比的绘图形式就是饼图,使用matplotlib中的plt.pie即可完成。
这种绘图过于单一,由其在默认配色下显得不够美观。
由此想到了对饼图进行改造,形成更加美观的环状图。其关键要点就是在原来饼图的基础上画一个半径更小的白底同心圆。
可以使用plt.Circle((0,0),0.70,fc='white')类似方法。
为了更贴近实际使用,本篇文章获取相关台风数据进行简单的统计分析,并使用环状图进行可视化展示。
数据介绍
中国气象局(CMA)的台风最佳路径数据集(BST),BST是之后对历史台风路径进行校正后发布的,其经纬度、强度、气压具有更高的可靠性,但是时间分辨率为6小时,部分3小时,这一点不如观测数据。
下载地址:http://tcdata.typhoon.org.cn
原始数据为txt格式,为了便于处理,此处已处理成csv,格式如下。
txt转换成csv的程序大家可以自己思考一下。这里提示一下,原来的txt格式中,每条新记录开头第一列都是66666,第三列是本次气旋过程共记录了多少行。感兴趣的小伙伴们可以根据这些自己尝试写一下。
没能搞定或者着急要数据的可以看文末的代码及数据获取方式。
导入模块
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
定义获取强度函数
def intensity(i):
df1 = df==i]
wsmax = max(df1['wind'])
return list(set(df1.isin()]['level']))
创建数组
TS = np.array([]) # 存放热带风暴
STS = np.array([]) # 存放强热带风暴s
TY = np.array([]) # 存放台风
STY = np.array([]) # 存放强台风
SSTY = np.array([])# 存放超强台风
2000-2019年逐年热带气旋强度统计
for year in range(2000,2020):
level = []
df = pd.read_csv(f'./data/CH{year}BST.csv')
numlist = list(set(df['number']))
for num in numlist:
level.append(intensity(num))
TS = np.append(TS,level.count('热带风暴'))
STS = np.append(STS,level.count('强热带风暴'))
TY = np.append(TY,level.count('台风'))
STY = np.append(STY,level.count('强台风'))
SSTY = np.append(SSTY,level.count('超强台风'))
fig, ax = plt.subplots(figsize=(12,15))
labels = ['TS','STS','TY','STY','SSTY']
explode = (0.05, 0.05, 0.05, 0.05, 0.05,)
colors = ['#66b3ff','#99ff99','#fff566','#ffc069','#ff7875']
for i in range(20):
size = []
size.append(TS<i>)
size.append(STS<i>)
size.append(TY<i>)
size.append(STY<i>)
size.append(SSTY<i>)
plt.subplot(5,4,i+1)
# draw pie
wedges, texts, autotexts = plt.pie(
size,
explode=explode,
autopct='%1.1f%%',
colors=colors,
shadow=True
)
# draw circle
centre_circle = plt.Circle((0,0),0.70,fc='white')
fig = plt.gcf()
fig.gca().add_artist(centre_circle)
plt.title(str(2000+i),fontsize=15)
if i==11:
plt.legend(wedges,
labels,
fontsize=12,
title="",
loc="center left",
bbox_to_anchor=(0.91, 0, 0.3, 1),
frameon=False)
plt.savefig('./typhoon_pie.png')</i></i></i></i></i>
代码及数据获取
1. 想一键跑通程序可点击阅读原文或在好奇心Log公众号后台回复气旋统计环状图
2. txt数据转csv数据代码获取方式在好奇心Log公众号后台回复气旋csv
文章来源于微信公众号:好奇心Log
页:
[1]