IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 厉害了,用Python绘制动态可视化图表,并保存成gif格式 -> 正文阅读

[人工智能]厉害了,用Python绘制动态可视化图表,并保存成gif格式

安装相关的模块

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

pip?install?gif

gif
matplotlib
plotly
altair

pip?install??"gif[altair]"

pip?install??"gif[matplotlib]"

pip?install?

"gif[plotly]"

gif?和?matplotlib?的结合

我们先来看?gif?和?matplotlib?模块的结合,我们先来看一个简单的例子,代码如下

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

gif
for
gif

gif?和?plotly?的结合

matplotlib
gif
plotly

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

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

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

动态气泡图

最后我们用?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

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-02-28 15:28:52  更:2022-02-28 15:29:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 18:25:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码