千家信息网

Python如何实现炫酷的动态图

发表于:2025-11-12 作者:千家信息网编辑
千家信息网最后更新 2025年11月12日,这篇文章主要为大家展示了"Python如何实现炫酷的动态图",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Python如何实现炫酷的动态图"这篇文章吧。启动
千家信息网最后更新 2025年11月12日Python如何实现炫酷的动态图

这篇文章主要为大家展示了"Python如何实现炫酷的动态图",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"Python如何实现炫酷的动态图"这篇文章吧。

启动

如果你还没安装 Plotly,只需在你的终端运行以下命令即可完成安装:

pip install plotly

安装完成后,就开始使用吧!

动画

在研究这个或那个指标的演变时,我们常涉及到时间数据。Plotly 动画工具仅需一行代码就能让人观看数据随时间的变化情况,如下图所示:

代码如下:

import plotly.express as pxfrom vega_datasets import datadf = data.disasters()df = df[df.Year > 1990]fig = px.bar(df,             y="Entity",             x="Deaths",             animation_frame="Year",             orientation='h',             range_x=[0, df.Deaths.max()],             color="Entity")# improve aesthetics (size, grids etc.)fig.update_layout(width=1000,                  height=800,                  xaxis_showgrid=False,                  yaxis_showgrid=False,                  paper_bgcolor='rgba(0,0,0,0)',                  plot_bgcolor='rgba(0,0,0,0)',                  title_text='Evolution of Natural Disasters',                  showlegend=False)fig.update_xaxes(title_text='Number of Deaths')fig.update_yaxes(title_text='')fig.show()

只要你有一个时间变量来过滤,那么几乎任何图表都可以做成动画。下面是一个制作散点图动画的例子:

import plotly.express as pxdf = px.data.gapminder()fig = px.scatter(    df,    x="gdpPercap",    y="lifeExp",    animation_frame="year",    size="pop",    color="continent",    hover_name="country",    log_x=True,    size_max=55,    range_x=[100, 100000],    range_y=[25, 90],    #   color_continuous_scale=px.colors.sequential.Emrld)fig.update_layout(width=1000,                  height=800,                  xaxis_showgrid=False,                  yaxis_showgrid=False,                  paper_bgcolor='rgba(0,0,0,0)',                  plot_bgcolor='rgba(0,0,0,0)')

太阳图

太阳图(sunburst chart)是一种可视化 group by 语句的好方法。如果你想通过一个或多个类别变量来分解一个给定的量,那就用太阳图吧。

假设我们想根据性别和每天的时间分解平均小费数据,那么相较于表格,这种双重 group by 语句可以通过可视化来更有效地展示。

这个图表是交互式的,让你可以自己点击并探索各个类别。你只需要定义你的所有类别,并声明它们之间的层次结构(见以下代码中的 parents 参数)并分配对应的值即可,这在我们案例中即为 group by 语句的输出。

import plotly.graph_objects as goimport plotly.express as pximport numpy as npimport pandas as pddf = px.data.tips()fig = go.Figure(go.Sunburst(    labels=["Female", "Male", "Dinner", "Lunch", 'Dinner ', 'Lunch '],    parents=["", "", "Female", "Female", 'Male', 'Male'],    values=np.append(        df.groupby('sex').tip.mean().values,        df.groupby(['sex', 'time']).tip.mean().values),    marker=dict(colors=px.colors.sequential.Emrld)),                layout=go.Layout(paper_bgcolor='rgba(0,0,0,0)',                                 plot_bgcolor='rgba(0,0,0,0)'))fig.update_layout(margin=dict(t=0, l=0, r=0, b=0),                  title_text='Tipping Habbits Per Gender, Time and Day')fig.show()

现在我们向这个层次结构再添加一层:

为此,我们再添加另一个涉及三个类别变量的 group by 语句的值。

import plotly.graph_objects as goimport plotly.express as pximport pandas as pdimport numpy as npdf = px.data.tips()fig = go.Figure(go.Sunburst(labels=[    "Female", "Male", "Dinner", "Lunch", 'Dinner ', 'Lunch ', 'Fri', 'Sat',    'Sun', 'Thu', 'Fri ', 'Thu ', 'Fri  ', 'Sat  ', 'Sun  ', 'Fri   ', 'Thu   '],                            parents=[                                "", "", "Female", "Female", 'Male', 'Male',                                'Dinner', 'Dinner', 'Dinner', 'Dinner',                                'Lunch', 'Lunch', 'Dinner ', 'Dinner ',                                'Dinner ', 'Lunch ', 'Lunch '                            ],                            values=np.append(                                np.append(                                    df.groupby('sex').tip.mean().values,                                    df.groupby(['sex',                                                'time']).tip.mean().values,                                ),                                df.groupby(['sex', 'time',                                            'day']).tip.mean().values),                            marker=dict(colors=px.colors.sequential.Emrld)),                layout=go.Layout(paper_bgcolor='rgba(0,0,0,0)',                                 plot_bgcolor='rgba(0,0,0,0)'))fig.update_layout(margin=dict(t=0, l=0, r=0, b=0),                  title_text='Tipping Habbits Per Gender, Time and Day')fig.show()

平行类别

另一种探索类别变量之间关系的方法是以下这种流程图。你可以随时拖放、高亮和浏览值,非常适合演示时使用。

代码如下:

import plotly.express as pxfrom vega_datasets import dataimport pandas as pddf = data.movies()df = df.dropna()df['Genre_id'] = df.Major_Genre.factorize()[0]fig = px.parallel_categories(    df,    dimensions=['MPAA_Rating', 'Creative_Type', 'Major_Genre'],    color="Genre_id",    color_continuous_scale=px.colors.sequential.Emrld,)fig.show()

平行坐标图

平行坐标图是上面的图表的连续版本。这里,每一根弦都代表单个观察。这是一种可用于识别离群值(远离其它数据的单条线)、聚类、趋势和冗余变量(比如如果两个变量在每个观察上的值都相近,那么它们将位于同一水平线上,表示存在冗余)的好用工具。

代码如下:

 import plotly.express as pxfrom vega_datasets import dataimport pandas as pddf = data.movies()df = df.dropna()df['Genre_id'] = df.Major_Genre.factorize()[0]fig = px.parallel_coordinates(    df,    dimensions=[        'IMDB_Rating', 'IMDB_Votes', 'Production_Budget', 'Running_Time_min',        'US_Gross', 'Worldwide_Gross', 'US_DVD_Sales'    ],    color='IMDB_Rating',    color_continuous_scale=px.colors.sequential.Emrld)fig.show()

量表图和指示器

量表图仅仅是为了好看。在报告 KPI 等成功指标并展示其与你的目标的距离时,可以使用这种图表。

指示器在业务和咨询中非常有用。它们可以通过文字记号来补充视觉效果,吸引观众的注意力并展现你的增长指标。

import plotly.graph_objects as gofig = go.Figure(go.Indicator(    domain = {'x': [0, 1], 'y': [0, 1]},    value = 4.3,    mode = "gauge+number+delta",    title = {'text': "Success Metric"},    delta = {'reference': 3.9},    gauge = {'bar': {'color': "lightgreen"},        'axis': {'range': [None, 5]},             'steps' : [                 {'range': [0, 2.5], 'color': "lightgray"},                 {'range': [2.5, 4], 'color': "gray"}],          }))fig.show()

以上是"Python如何实现炫酷的动态图"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

变量 类别 代码 动画 图表 数据 语句 动态 内容 太阳 指标 时间 篇文章 平行 之间 冗余 可以通过 层次 工具 指示 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 服务器每天重新启动的时间 遍历数据库中数据到li里 河南悦如网络技术公司 网络安全防控常态 上市国企那家做网络安全公司 关于网络安全课程的 电召软件开发 云服务器传统服务器 台湾服务器电源品牌云主机 爬虫 看不到网页的数据库 数据库相关项目描述 访问自己服务器被拒绝 如何防止数据库篡改 摄像头客户端服务器地址格式错误 云南红河软件开发的公司 和平精英地区专有服务器 电厂网络安全应急处置方案 佳人网络技术有限公司 公众号绑定数据库 网络安全知识竞赛情况汇报 第四届广东省网络安全宣传视频 个人服务器需要什么硬件配置 数据库定义函数必须有参数 建立网络安全综合治理体系 网络安全法规定运营者义务 软件开发库产品库 网络安全隐患排查情况说明 二本比较好的软件开发大学 网络安全知识普及教育检训 数据库中in运算
0