脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - 如何利用 Python 绘制动态可视化图表

如何利用 Python 绘制动态可视化图表

2022-10-14 10:57Python数据挖掘 Python

这篇文章主要介绍了如何利用 Python 绘制动态可视化图表,主要介绍介绍如何进行保存gif格式的文件。那么我们就开始进入主题,来谈一下Python当中的gif模块,需要的朋友可以参考一下

一、安装相关的模块

首先第一步的话我们需要安装相关的模块,通过pip命令来安装

pip install gif

另外由于gif模块之后会被当做是装饰器放在绘制可视化图表的函数上,主要我们依赖的还是Python当中绘制可视化图表的matplotlibplotly、以及altair这些模块,因此我们还需要下面这几个库

pip install "gif[altair]"    
pip install "gif[matplotlib]"
pip install "gif[plotly]"

二、gif和matplotlib的结合

我们先来看gifmatplotlib模块的结合,我们先来看一个简单的例子,

代码如下:

import random
from matplotlib import pyplot as plt
import gif

x = [random.randint(0, 100) for _ in range(100)]
y = [random.randint(0, 100) for _ in range(100)]

gif.options.matplotlib["dpi"] = 300

@gif.frame
def plot(i):
    xi = x[i*10:(i+1)*10]
    yi = y[i*10:(i+1)*10]
    plt.scatter(xi, yi)
    plt.xlim((0, 100))
    plt.ylim((0, 100))

frames = []
for i in range(10):
    frame = plot(i)
    frames.append(frame)

gif.save(frames, "example.gif", duration=3.5, unit="s", between="startend")

output:

如何利用 Python 绘制动态可视化图表

代码的逻辑并不难理解,首先我们需要定义一个函数来绘制图表并且带上gif装饰器,接着我们需要一个空的列表,通过for循环将绘制出来的对象放到这个空列表当中然后保存成gif格式的文件即可。

 

三、gif和plotly的结合

除了和matplotlib的联用之外,gifplotly之间也可以结合起来用

代码如下:

import random
import plotly.graph_objects as go
import pandas as pd
import gif

df = pd.DataFrame({
    "t": list(range(10)) * 10,
    "x": [random.randint(0, 100) for _ in range(100)],
    "y": [random.randint(0, 100) for _ in range(100)]
})

@gif.frame
def plot(i):
    d = df[df["t"] == i]
    fig = go.Figure()
    fig.add_trace(go.Scatter(
        x=d["x"],
        y=d["y"],
        mode="markers"
    ))
    fig.update_layout(width=500, height=300)
    return fig

frames = []
for i in range(10):
    frame = plot(i)
    frames.append(frame)

gif.save(frames, "example_plotly.gif", duration=100)

output:

如何利用 Python 绘制动态可视化图表

整体的代码逻辑和上面的相似,这里也就不做具体的说明了

 

四、matplotlib多子图动态可视化

上面绘制出来的图表都是在单张图表当中进行的,那当然了我们还可以在多张子图中进行动态可视化的展示,

代码如下:

# 读取数据
df = pd.read_csv("weather_hourly_darksky.csv")
df = df.rename(columns={"time": "date"})

@gif.frame
def plot(df, date):
    df = df.loc[df.index[0]:pd.Timestamp(date)]

    fig, (ax1, ax2, ax3) = plt.subplots(3, figsize=(10, 6), dpi=100)

    ax1.plot(df.temperature, marker="o", linestyle="--", linewidth=1, markersize=3, color="g")
    maxi = round(df.temperature.max() + 3)
    ax1.set_xlim([START, END])
    ax1.set_ylim([0, maxi])
    ax1.set_ylabel("TEMPERATURE", color="green")

    ax2.plot(df.windSpeed, marker="o", linestyle="--", linewidth=1, markersize=3, color="b")
    maxi = round(df.windSpeed.max() + 3)
    ax2.set_xlim([START, END])
    ax2.set_ylim([0, maxi])
    ax2.set_ylabel("WIND", color="blue")

    ax3.plot(df.visibility, marker="o", linestyle="--", linewidth=1, markersize=3, color="r")
    maxi = round(df.visibility.max() + 3)
    ax3.set_xlim([START, END])
    ax3.set_ylim([0, maxi])
    ax3.set_ylabel("VISIBILITY", color="red")

frames = []
for date in pd.date_range(start=df.index[0], end=df.index[-1], freq="1M"):
    frame = plot(df, date)
    frames.append(frame)

gif.save(frames, "文件名称.gif", duration=0.5, unit="s")

output:

如何利用 Python 绘制动态可视化图表

 

五、动态气泡图

最后我们用plotly模块来绘制一个动态的气泡图,

代码如下:

import gif
import plotly.graph_objects as go
import numpy as np
np.random.seed(1)

N = 100
x = np.random.rand(N)
y = np.random.rand(N)
colors = np.random.rand(N)
sz = np.random.rand(N) * 30

layout = go.Layout(
    xaxis={"range": [-2, 2]},
    yaxis={"range": [-2, 2]},
    margin=dict(l=10, r=10, t=10, b=10)
)

@gif.frame
def plot(i):
    fig = go.Figure(layout=layout)
    fig.add_trace(go.Scatter(
        x=x[:i],
        y=y[:i],
        mode="markers",
        marker=go.scatter.Marker(
            size=sz[:i],
            color=colors[:i],
            opacity=0.6,
            colorscale="Viridis"
        )
    ))
    fig.update_layout(width=500, height=300)
    return fig

frames = []
for i in range(100):
    frame = plot(i)
    frames.append(frame)

gif.save(frames, "bubble.gif")

output:

如何利用 Python 绘制动态可视化图表

到此这篇关于如何利用 Python 绘制动态可视化图表的文章就介绍到这了,更多相关Python 绘制动态可视化图表内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文地址:https://blog.csdn.net/qq_34160248/article/details/123052069

延伸 · 阅读

精彩推荐
  • Pythonpython结合多线程爬取英雄联盟皮肤(原理分析)

    python结合多线程爬取英雄联盟皮肤(原理分析)

    多线程是为了同步完成多项任务,不是为了提高运行效率,而是为了提高资源使用效率来提高系统的效率。这篇文章主要介绍了python爬取英雄联盟皮肤结合...

    武亮宇7222021-11-14
  • Pythonpython爬取哈尔滨天气信息

    python爬取哈尔滨天气信息

    这篇文章主要为大家详细介绍了python爬虫抓取哈尔滨天气信息,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    小嘉欣4692021-03-17
  • PythonPython简单实现自动删除目录下空文件夹的方法

    Python简单实现自动删除目录下空文件夹的方法

    这篇文章主要介绍了Python简单实现自动删除目录下空文件夹的方法,涉及Python针对文件与目录的读取、判断、删除等相关操作技巧,需要的朋友可以参考下...

    我才是二亮3372020-12-04
  • Python一文读懂Python 枚举

    一文读懂Python 枚举

    这篇文章主要介绍了Python 枚举的相关资料,帮助大家更好的理解和学习python,感兴趣的朋友可以了解下...

    python技术5142020-08-25
  • Pythonpython调用文字识别OCR轻松搞定验证码

    python调用文字识别OCR轻松搞定验证码

    本文主要介绍了python调用文字识别OCR轻松搞定验证码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    诗一样的代码10082022-02-24
  • PythonPython利用DNN实现宝石识别

    Python利用DNN实现宝石识别

    深度神经网络(Deep Neural Networks,简称DNN)是深度学习的基础,其结构为input、hidden(可有多层)、output,每层均为全连接。本文将利用DNN实现宝石识别,感...

    Livingbody10082022-09-06
  • Python中秋阴天看不见月亮只好用python写赏月工具

    中秋阴天看不见月亮只好用python写赏月工具

    女神约我去赏月!我一看中秋节可能会下雨,立马用Python写了款赏月工具!本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考价值,需要的朋...

    顾木子吖4992022-01-08
  • Pythonpython类共享变量操作

    python类共享变量操作

    这篇文章主要介绍了python类共享变量操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    蝙蝠X7942020-09-04