千家信息网

在Python中怎么创建条形图追赶动画

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇内容介绍了"在Python中怎么创建条形图追赶动画"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
千家信息网最后更新 2026年11月02日在Python中怎么创建条形图追赶动画

本篇内容介绍了"在Python中怎么创建条形图追赶动画"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

前言

动画是使可视化更具吸引力和用户吸引力的好方法。它帮助我们以有意义的方式展示数据可视化。Python 帮助我们使用现有的强大 Python 库创建动画可视化。Matplotlib是一个非常流行的数据可视化库,通常用于数据的图形表示以及使用内置函数的动画。

使用 Matplotlib 创建动画有两种方法:

  • 使用 pause() 函数

  • 使用 FuncAnimation() 函数

方法一:使用 pause() 函数

在暂停()的matplotlib库的pyplot模块在功能上用于暂停为参数提到间隔秒。考虑下面的示例,我们将使用 matplotlib 创建一个简单的线性图并在其中显示动画:

创建 2 个数组 X 和 Y,并存储从 1 到 100 的值。

使用 plot() 函数绘制 X 和 Y。

以合适的时间间隔添加 pause() 函数

运行程序,你会看到动画。

Python

from matplotlib import pyplot as plt  x = []y = []  for i in range(100):    x.append(i)    y.append(i)      # 提及 x 和 y 限制以定义其范围    plt.xlim(0, 100)    plt.ylim(0, 100)          # 绘制图形    plt.plot(x, y, color = 'green')    plt.pause(0.01)  plt.show()

输出 :

同样,你也可以使用 pause() 函数在各种绘图中创建动画。

方法二:使用 FuncAnimation() 函数

这个FuncAnimation() 函数不会自己创建动画,而是从我们传递的一系列图形中创建动画。

语法: FuncAnimation(figure, animation_function, frames=None, init_func=None, fargs=None, save_count=None, *, cache_frame_data=True,
**kwargs)

现在您可以使用 FuncAnimation 函数制作多种类型的动画:

线性图动画

在这个例子中,我们将创建一个简单的线性图,它将显示一条线的动画。同样,使用 FuncAnimation,我们可以创建多种类型的动画视觉表示。我们只需要在一个函数中定义我们的动画,然后用合适的参数将它传递给FuncAnimation。

Python

from matplotlib import pyplot as pltfrom matplotlib.animation import FuncAnimationimport numpy as np  x = []y = []  figure, ax = plt.subplots()  # 设置 x 和 y 轴的限制ax.set_xlim(0, 100)ax.set_ylim(0, 12)  # 绘制单个图形line,  = ax.plot(0, 0)   def animation_function(i):    x.append(i * 15)    y.append(i)      line.set_xdata(x)    line.set_ydata(y)    return line,  animation = FuncAnimation(figure,                          func = animation_function,                          frames = np.arange(0, 10, 0.1),                           interval = 10)plt.show()

输出:

Python 中的条形图追赶动画

在此示例中,我们将创建一个简单的条形图动画,它将显示每个条形的动画。

Python

from matplotlib import pyplot as pltfrom matplotlib.animation import FuncAnimation, writersimport numpy as npplt.rcParams['font.sans-serif'] = ['Microsoft YaHei']  fig = plt.figure(figsize = (7,5))axes = fig.add_subplot(1,1,1)axes.set_ylim(0, 300)palette = ['blue', 'red', 'green',                'darkorange', 'maroon', 'black']y1, y2, y3, y4, y5, y6 = [], [], [], [], [], []def animation_function(i):        y1 = i        y2 = 6 * i        y3 = 3 * i        y4 = 2 * i        y5 = 5 * i        y6 = 3 * i        plt.xlabel("国家")        plt.ylabel("国家GDP")                plt.bar(["印度", "中国", "德国",                        "美国", "加拿大", "英国"],                        [y1, y2, y3, y4, y5, y6],                        color = palette)plt.title("条形图动画")animation = FuncAnimation(fig, animation_function,                                                interval = 50)plt.show()

输出:

Python 中的散点图动画:

在这个例子中,我们将使用随机函数在 python 中动画散点图。我们将遍历animation_func并在迭代时绘制 x 和 y 轴的随机值。

from matplotlib import pyplot as pltfrom matplotlib.animation import FuncAnimationimport randomimport numpy as npx = []y = []colors = []fig = plt.figure(figsize=(7,5))def animation_func(i):        x.append(random.randint(0,100))        y.append(random.randint(0,100))        colors.append(np.random.rand(1))        area = random.randint(0,30) * random.randint(0,30)        plt.xlim(0,100)        plt.ylim(0,100)        plt.scatter(x, y, c = colors, s = area, alpha = 0.5)animation = FuncAnimation(fig, animation_func,                                                interval = 100)plt.show()

输出:

条形图追赶的水平移动

在这里,我们将使用城市数据集中的最高人口绘制条形图竞赛。

不同的城市会有不同的条形图,条形图追赶将从 1990 年到 2018 年迭代。

我从人口最多的数据集中选择了最高城市的国家。

需要用到的数据集可以从这里下载:city_populations

Python

import pandas as pdimport matplotlib.pyplot as pltimport matplotlib.ticker as tickerfrom matplotlib.animation import FuncAnimation  plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']  df = pd.read_csv('city_populations.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()  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')             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.12, '从 1500 年到 2018 年世界上人口最多的城市',            transform=ax.transAxes, size=24, weight=600, ha='left')          ax.text(1, 0, 'by haiyong.site | 海拥',             transform=ax.transAxes, ha='right', color='#777777',             bbox=dict(facecolor='white', alpha=0.8, edgecolor='white'))    plt.box(False)    plt.show()  fig, ax = plt.subplots(figsize=(15, 8))animator = FuncAnimation(fig, draw_barchart,                          frames = range(1990, 2019))plt.show()

输出:

"在Python中怎么创建条形图追赶动画"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

动画 函数 条形 数据 输出 图形 城市 方法 可视化 人口 国家 线性 不同 合适 最高 例子 内容 参数 吸引力 多种 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 保险科技 互联网保险 科技互联网项目 华中科技大学互联网 苏州互联网科技贷款公司 天下捷融互联网科技 互联网养老 桔豆科技 联恩商钥互联网科技有限公司 四个字互联网科技公司取名 贵州叶脉互联网科技有限公司所属行业 宁夏众和广鑫互联网科技有限公司 互联网公司科技股 怎样加入科技互联网 有人说阿里系是互联网科技企业 上海乐五互联网科技有限公司 昆明中奇联合互联网科技 互联网科技平台产品运营 互联网金融运营模式中的金融科技 山东蛋芒互联网科技有限公司 互联网领先科技成果宣传视频 现代科技的标志之一的互联网 科技创新与互联网经济 科技制造互联网公司 有木互联网科技 人人互联网科技是培训 无锡溥仪互联网科技有限公司 互联网之后的科技是什么 深圳市优智互联网科技有限公司 南京一网一红互联网科技有限公司 广西科技产业互联网是什么 上海互联网科技园景观
0