一文学会制作6种炫酷的Python动态图

 很多时候,一张炫酷图就足以胜过千言万语。对于数学科学家来说,当想阐述自己的观点、劳动成果时,我们需要直接有效的沟通。单调乏味的文本和数字,很难抓住别人的眼球,飘飘亮亮的可视化动态图是必不可少的,至少是一个加分项。

目前创新互联建站已为上千的企业提供了网站建设、域名、虚拟空间、网站托管、服务器租用、企业网站设计、利川网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

本文将基于Python的Plotly图形库,介绍几种工作中常用的动画图和交互式图标。在使用之前看一下是否安装了 Plotly。

1. 朝阳图

层次结构数据通常存储为矩形数据框,其中不同的列对应于层次结构的不同级别。px.sunburst可以采用path与列列表相对应的参数。请注意,如果给出id,则parent不应提供path。

 
 
 
 
  1. import plotly.express as px
  2. df = px.data.tips()
  3. fig = px.sunburst(df, path=['day', 'time', 'sex'], values='total_bill')
  4. fig.show()

2. 桑基图

桑基图通过定义可视化到流动的贡献源来表示源节点,目标为目标节点,数值以设置流volum,和标签,显示了节点名称,在流量分析中常用。

 
 
 
 
  1. import plotly.graph_objects as go
  2. import urllib, json
  3. url = 'https://raw.githubusercontent.com/plotly/plotly.js/master/test/image/mocks/sankey_energy.json'
  4. response = urllib.request.urlopen(url)
  5. data = json.loads(response.read())
  6. # override gray link colors with 'source' colors
  7. opacity = 0.4
  8. # change 'magenta' to its 'rgba' value to add opacity
  9. data['data'][0]['node']['color'] = ['rgba(255,0,255, 0.8)' if color == "magenta" else color for color in data['data'][0]['node']['color']]
  10. data['data'][0]['link']['color'] = [data['data'][0]['node']['color'][src].replace("0.8", str(opacity))
  11.                                     for src in data['data'][0]['link']['source']]
  12. fig = go.Figure(data=[go.Sankey(
  13.     valueformat = ".0f",
  14.     valuesuffix = "TWh",
  15.     # Define nodes
  16.     node = dict(
  17.       pad = 15,
  18.       thickness = 15,
  19.       line = dict(color = "black", width = 0.5),
  20.       label =  data['data'][0]['node']['label'],
  21.       color =  data['data'][0]['node']['color']
  22.     ),
  23.     # Add links
  24.     link = dict(
  25.       source =  data['data'][0]['link']['source'],
  26.       target =  data['data'][0]['link']['target'],
  27.       value =  data['data'][0]['link']['value'],
  28.       label =  data['data'][0]['link']['label'],
  29.       color =  data['data'][0]['link']['color']
  30. ))])
  31. fig.update_layout(title_text="Energy forecast for 2050
    Source: Department of Energy & Climate Change, Tom Counsell via Mike Bostock",
  32.                   font_size=10)
  33. fig.show()

效果图

3. 雷达图

雷达图(也称为蜘蛛情节或情节星)显示器在从中心轴始发表示定量变量的二维图的形式多变量数据。轴的相对位置和角度通常是无用的。它等效于轴沿径向排列的平行坐标图。

 
 
 
 
  1. import plotly.graph_objects as go
  2. import urllib, json
  3. url = 'https://raw.githubusercontent.com/plotly/plotly.js/master/test/image/mocks/sankey_energy.json'
  4. response = urllib.request.urlopen(url)
  5. data = json.loads(response.read())
  6. # override gray link colors with 'source' colors
  7. opacity = 0.4
  8. # change 'magenta' to its 'rgba' value to add opacity
  9. data['data'][0]['node']['color'] = ['rgba(255,0,255, 0.8)' if color == "magenta" else color for color in data['data'][0]['node']['color']]
  10. data['data'][0]['link']['color'] = [data['data'][0]['node']['color'][src].replace("0.8", str(opacity))
  11.                                     for src in data['data'][0]['link']['source']]
  12. fig = go.Figure(data=[go.Sankey(
  13.     valueformat = ".0f",
  14.     valuesuffix = "TWh",
  15.     # Define nodes
  16.     node = dict(
  17.       pad = 15,
  18.       thickness = 15,
  19.       line = dict(color = "black", width = 0.5),
  20.       label =  data['data'][0]['node']['label'],
  21.       color =  data['data'][0]['node']['color']
  22.     ),
  23.     # Add links
  24.     link = dict(
  25.       source =  data['data'][0]['link']['source'],
  26.       target =  data['data'][0]['link']['target'],
  27.       value =  data['data'][0]['link']['value'],
  28.       label =  data['data'][0]['link']['label'],
  29.       color =  data['data'][0]['link']['color']
  30. ))])
  31. fig.update_layout(title_text="Energy forecast for 2050
    Source: Department of Energy & Climate Change, Tom Counsell via Mike Bostock",
  32.                   font_size=10)
  33. fig.show()

效果图

4. 漏斗图

漏斗图通常用于表示业务流程不同阶段的数据。在商业智能中,这是识别流程潜在问题区域的重要机制。例如,它用于观察销售过程中每个阶段的收入或损失,并显示逐渐减小的值。每个阶段均以占所有值的百分比表示。

 
 
 
 
  1. from plotly import graph_objects as go
  2. fig = go.Figure()
  3. fig.add_trace(go.Funnel(
  4.     name = 'Montreal',
  5.     y = ["Website visit", "Downloads", "Potential customers", "Requested price"],
  6.     x = [120, 60, 30, 20],
  7.     textinfo = "value+percent initial"))
  8. fig.add_trace(go.Funnel(
  9.     name = 'Toronto',
  10.     orientation = "h",
  11.     y = ["Website visit", "Downloads", "Potential customers", "Requested price", "invoice sent"],
  12.     x = [100, 60, 40, 30, 20],
  13.     textposition = "inside",
  14.     textinfo = "value+percent previous"))
  15. fig.add_trace(go.Funnel(
  16.     name = 'Vancouver',
  17.     orientation = "h",
  18.     y = ["Website visit", "Downloads", "Potential customers", "Requested price", "invoice sent", "Finalized"],
  19.     x = [90, 70, 50, 30, 10, 5],
  20.     textposition = "outside",
  21.     textinfo = "value+percent total"))
  22. fig.show()

效果图

5. 3D表面图

具有轮廓的曲面图,使用contours属性显示和自定义每个轴的轮廓数据。

 
 
 
 
  1. import plotly.graph_objects as go
  2. import pandas as pd
  3. # Read data from a csv
  4. z_data = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/api_docs/mt_bruno_elevation.csv')
  5. fig = go.Figure(data=[go.Surface(z=z_data.values)])
  6. fig.update_traces(contours_z=dict(show=True, usecolormap=True,
  7.                                   highlightcolor="limegreen", project_z=True))
  8. fig.update_layout(title='Mt Bruno Elevation', autosize=False,
  9.                   scene_camera_eye=dict(x=1.87, y=0.88, z=-0.64),
  10.                   width=500, height=500,
  11.                   margin=dict(l=65, r=50, b=65, t=90)
  12. )
  13. fig.show()

6. 动画图

一些Plotly Express函数支持通过animation_frame和animation_group参数创建动画人物。这是使用Plotly Express创建的动画散点图的示例。请注意,您应始终修复x_range和,y_range以确保您的数据在整个动画中始终可见。

 
 
 
 
  1. import plotly.express as px
  2. df = px.data.gapminder()
  3. px.scatter(df, x="gdpPercap", y="lifeExp", animation_frame="year", animation_group="country",
  4.            size="pop", color="continent", hover_name="country",
  5.            log_x=True, size_max=55, range_x=[100,100000], range_y=[25,90])

结论

可视化的图形在日常工作中经常实用,其中Plotly是用过的体验比较好的,本篇文章分享给大家一些案例,Plotly可视化远不止这些,在后续的文章中,涉及可视化部分的,将介绍更多酷炫的可视化图形,喜欢点个在看分享,收藏以备不时之需。

标题名称:一文学会制作6种炫酷的Python动态图
本文地址:http://www.csdahua.cn/qtweb/news39/286439.html

网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网