python制作动态排序图

Posted Maple_feng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python制作动态排序图相关的知识,希望对你有一定的参考价值。

一、代码

import pandas as pd
import matplotlib.pyplot as plt
import  matplotlib.ticker as ticker
import matplotlib.animation as animation

df = pd.read_csv(r动态排序数据.csv,
                 usecols=[name, group, year, value])

colors = dict(zip(
    [India, Europe, Asia, Latin America,
     Middle East, North America, Africa],
    [#adb0ff, #ffb3ff, #90d595, #e48381,
     #aafbff, #f7bb5f, #eafb50]
))

group_lk = df.set_index(name)[group].to_dict()
fig, ax = plt.subplots(figsize=(15, 8))


def draw_barchart(year):
    dff = df[df[year].eq(year)].sort_values(by=value, ascending=True).tail(10)
    ax.clear()
    ax.barh(dff[name], dff[value], color=[colors[group_lk[x]] for x in dff[name]])
    dx = dff[value].max() / 200
    for i, (value, name) in enumerate(zip(dff[value], dff[name])):
        ax.text(value - dx, i, name, size=14, weight=600, ha=right, va=bottom)
        ax.text(value - dx, i - .25, group_lk[name], size=10, color=#444444, ha=right, va=baseline)
        ax.text(value + dx, i, f{value:,.0f}, size=14, ha=left, va=center)
    # ... polished styles
    ax.text(1, 0.4, year, transform=ax.transAxes, color=#777777, size=46, ha=right, weight=800)
    ax.text(0, 1.06, Population (thousands), transform=ax.transAxes, size=12, color=#777777)
    ax.xaxis.set_major_formatter(ticker.StrMethodFormatter({x:,.0f}))
    ax.xaxis.set_ticks_position(top)
    ax.tick_params(axis=x, colors=#777777, labelsize=12)
    ax.set_yticks([])
    ax.margins(0, 0.01)
    ax.grid(which=major, axis=x, linestyle=-)
    ax.set_axisbelow(True)
    ax.text(0, 1.11, The most populous cities in the world from 1968 to 2018,
            transform=ax.transAxes, size=24, weight=600, ha=left)
    ax.text(1, 0, by maple, transform=ax.transAxes, ha=right,size=15,
                color=#777777, bbox=dict(facecolor=white, alpha=0.8, edgecolor=white))
    plt.box(False)

animator = animation.FuncAnimation(fig=fig, func=draw_barchart, frames=range(1968, 2019))

animator.save("动态排序.gif")

数据地址:

https://pan.baidu.com/s/1Qml2z48B4-6PEB1Pjg4v_w

提取密码:2jb4

以上是关于python制作动态排序图的主要内容,如果未能解决你的问题,请参考以下文章

如何把视频片段做成动态图片

Python 使用PIL.Image制作一个运动小人的动态图

Python排序算法动态图形化演示(实现代码)

如何用Python制作3D动态航线图

python 用于在终端中运行的sublime text 3的简单代码片段制作工具

如何用 Python 制作 GIF 动图