python 扇形图变色代码_几行代码完成动态图表绘制 | Python实战

f1bb20bc30cfc478f22705ebc52bd177.gif

a83b1bddb45f5a877d024e52335bc9bf.png

作者 | 小F

来源 | 法纳斯特

头图 | CSDN下载自视觉中国

关于动态条形图,小F以前推荐过「Bar Chart Race」这个库。三行代码就能实现动态条形图的绘制。

有些同学在使用的时候,会出现一些错误。一个是加载文件报错,另一个是生成GIF的时候报错。

这是因为作者的示例是网络加载数据,会读取不到。通过读取本地文件,就不会出错。

GIF生成失败一般是需要安装imagemagick(图片处理工具)。

最近小F又发现一个可视化图库「Pandas_Alive」,不仅包含动态条形图,还可以绘制动态曲线图、气泡图、饼状图、地图等。

同样也是几行代码就能完成动态图表的绘制。

安装版本建议是0.2.3,matplotlib版本是3.2.1。

同时需自行安装tqdm(显示进度条)和descartes(绘制地图相关库)。

要不然会出现报错,估计是作者的requestment.txt没包含这两个库。

好了,成功安装后就可以引入这个第三方库,直接选择加载本地文件。

import pandas_aliveimport pandas as pdcovid_df = pd.read_csv('data/covid19.csv', index_col=0, parse_dates=[0])covid_df.plot_animated(filename='examples/example-barh-chart.gif', n_visible=15)

生成了一个GIF图,具体如下。

3161a6e8b3c9cb31df22446c6e645484.gif

刚开始学习这个库的时候,大家可以减少数据,这样生成GIF的时间就会快一些。

比如小F在接下来的实践中,基本都只选取了20天左右的数据。

a4da7250e37a5ded3e1d56e79804dc96.png

对于其他图表,我们可以查看官方文档的API说明,得以了解。

9b1e822475badcef5e6c4eb4964d1ebe.png

下面我们就来看看其他动态图表的绘制方法吧!

3407e603e2d93f727ebf5f43a290575a.png动态条形图

elec_df = pd.read_csv("data/Aus_Elec_Gen_1980_2018.csv", index_col=0, parse_dates=[0], thousands=',')elec_df = elec_df.iloc[:20, :]elec_df.fillna(0).plot_animated('examples/example-electricity-generated-australia.gif', period_fmt="%Y",                                title='Australian Electricity Generation Sources 1980-2018')

0bab220ed3fe6fc58afe090245693aa4.gif

da6b70cef31753de9e49c61ca5857d61.png

动态柱状图

covid_df = pd.read_csv('data/covid19.csv', index_col=0, parse_dates=[0])covid_df.plot_animated(filename='examples/example-barv-chart.gif', orientation='v', n_visible=15)

3fc939c8949dec882116fa0b4453538f.png

动态曲线图

covid_df = pd.read_csv('data/covid19.csv', index_col=0, parse_dates=[0])covid_df.diff().fillna(0).plot_animated(filename='examples/example-line-chart.gif', kind='line', period_label={'x': 0.25, 'y': 0.9})

6eed76d4b329bb963fe1cf1f528fbace.png

动态面积图

covid_df = pd.read_csv('data/covid19.csv', index_col=0, parse_dates=[0])covid_df.sum(axis=1).fillna(0).plot_animated(filename='examples/example-bar-chart.gif', kind='bar', period_label={'x': 0.1, 'y': 0.9}, enable_progress_bar=True, steps_per_period=2, interpolate_period=True, period_length=200)

6b580a2a7ebcd23b655ea6b3048ba7ec.gif

18de6d7de0e02ac9265a3051c59adb0d.png

动态散点图

max_temp_df = pd.read_csv("data/Newcastle_Australia_Max_Temps.csv", parse_dates={"Timestamp": ["Year", "Month", "Day"]},)min_temp_df = pd.read_csv("data/Newcastle_Australia_Min_Temps.csv", parse_dates={"Timestamp": ["Year", "Month", "Day"]},)

max_temp_df = max_temp_df.iloc[:5000, :]min_temp_df = min_temp_df.iloc[:5000, :]

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[keep_columns].resample("Y").mean().plot_animated(filename='examples/example-scatter-chart.gif', kind="scatter",                                                               title='Max & Min Temperature Newcastle, Australia')

92f7f9babae176321c6e3c92448df662.gif

7a0a21b380cb9e920f71c52a81751518.png

动态饼状图

covid_df = pd.read_csv('data/covid19.csv', index_col=0, parse_dates=[0])covid_df.plot_animated(filename='examples/example-pie-chart.gif', kind="pie",                       rotatelabels=True, period_label={'x': 0, 'y': 0})

c63b32fd83183a71b4534d7557dfca0f.png

动态气泡图

multi_index_df = pd.read_csv("data/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.plot_animated( kind="bubble", filename="examples/example-bubble-chart.gif", x_data_label="Longitude", y_data_label="Latitude", size_data_label="Cases", color_data_label="Cases", vmax=5, steps_per_period=3, interpolate_period=True, period_length=500, dpi=100)

51dc8660767278e8b329ce68b7a1a438.gif

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值