码迷,mamicode.com
首页 > 编程语言 > 详细

python制作动态排序图

时间:2020-01-23 11:08:20      阅读:418      评论:0      收藏:0      [点我收藏+]

标签:ext   pos   otto   nes   box   formatter   The   grid   margin   

一、代码

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制作动态排序图

标签:ext   pos   otto   nes   box   formatter   The   grid   margin   

原文地址:https://www.cnblogs.com/angelyan/p/12230208.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!