多子图联动竞赛图
pip install pandas_alive #或者 conda install pandas_alive -c conda-forge
支持数据
数据格式如下,
使用方法类似pandas这些,pandas仅需一行代码解决支持图形类别
结合geopandas,
import pandas as pd import pandas_alive import matplotlib.pyplot as plt plt.style.use('ggplot') #读入数据 elec_df = pd.read_csv("Aus_Elec_Gen_1980_2018.csv", index_col=0, parse_dates=[0], thousands=',') #定义求和def def current_total(values): total = values.sum() s = f'Total : {int(total)}' return {'x': .85, 'y': .2, 's': s, 'ha': 'right', 'size': 11} #缺省值0填充、绘图 elec_df.fillna(0).tail(n=10).plot_animated( 'electricity-generated-australia.gif', #保存gif名称 period_fmt="%d/%m/%Y", #动态更新图中时间戳 title='Australian Electricity Sources 1980-2018', #标题 perpendicular_bar_func='mean', #添加均值辅助线 period_summary_func=current_total, #汇总 cmap='Set1', #定义调色盘 n_visible=5, #柱子显示数 orientation='h',#柱子方向 )
elec_df.diff().fillna(0).tail(n=10).plot_animated(filename='line-chart.gif', kind='line',#指定折线模式 cmap='Set1', period_label={ 'x': 0.25, 'y': 0.9 }, line_width=1, add_legend=True, fill_under_line_color='#01a2d9')
import pandas_alive covid_df.sum(axis=1).fillna(0).tail(n=10).plot_animated( filename='sumbar-chart.gif', kind='bar', #指定bar模式 cmap='Set1', #定义调色盘 period_label={ 'x': 0.1, 'y': 0.9 }, orientation='h', enable_progress_bar=True, steps_per_period=2, interpolate_period=True, period_length=200)
import pandas as pd import pandas_alive #max散点数据 max_temp_df = pd.read_csv( "Newcastle_Australia_Max_Temps.csv", parse_dates={"Timestamp": ["Year", "Month", "Day"]}, ) #min散点数据 min_temp_df = pd.read_csv( "Newcastle_Australia_Min_Temps.csv", parse_dates={"Timestamp": ["Year", "Month", "Day"]}, ) #按时间戳merge max/min数据 merged_temp_df = pd.merge_asof(max_temp_df, min_temp_df, on="Timestamp") merged_temp_df.index = pd.to_datetime( merged_temp_df["Timestamp"].dt.strftime('%Y/%m/%d')) keep_columns = [ "Minimum temperature (Degree C)", "Maximum temperature (Degree C)" ] merged_temp_df.head(n=5000)[keep_columns].resample("Y").mean().plot_animated( filename='scatter-chart.gif', cmap='Set1', kind="scatter",#指定散点模式 size=10, title='Max & Min Temperature Newcastle, Australia')
import pandas_alive multi_index_df = pd.read_csv("multi.csv", header=[0, 1], index_col=0) multi_index_df.index = pd.to_datetime(multi_index_df.index, dayfirst=True) map_chart = multi_index_df.tail(n=40).plot_animated( kind="bubble", #指定气泡模式 filename="bubble-chart.gif", x_data_label="Longitude", y_data_label="Latitude", size_data_label="Cases", color_data_label="Cases", vmax=5, steps_per_period=1, interpolate_period=True, period_length=500, dpi=150)
这部分可以结合matplotlib的多子图绘制,实现各种个性化动图,可参考matplotlib-多子图绘制(为所欲为版),核心代码如下,
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
长按识别二维码并关注微信
更方便到期提醒、手机管理