点击蓝色“Python空间”关注我丫

加个“星标”,每天一起快乐的学习

选自TowardsDataScience    作者:Liana Mehrabyan

机器之心编译     参与:Panda

数据可以帮助我们描述这个世界、阐释自己的想法和展示自己的成果,但如果只有单调乏味的文本和数字,我们却往往能难抓住观众的眼球。而很多时候,一张漂亮的可视化图表就足以胜过千言万语。本文将介绍 5 种基于 Plotly 的可视化方法,你会发现,原来可视化不仅可用直方图和箱形图,还能做得如此动态好看甚至可交互。

对数据科学家来说,讲故事是一个至关重要的技能。为了表达我们的思想并且说服别人,我们需要有效的沟通。而漂漂亮亮的可视化是完成这一任务的绝佳工具。本文将介绍

5 种非传统的可视化技术

,可让你的数据故事更漂亮和更有效。这里将使用 Python 的 Plotly 图形库(也可通过 R 使用),让你可以毫不费力地生成动画图表和交互式图表。

那么,Plotly 有哪些好处?

Plotly 的整合能力很强:

可与 Jupyter Notebook 一起使用,可嵌入网站,并且完整集成了 Dash——一种用于构建仪表盘和分析应用的出色工具。

启动

如果你还没安装 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()

原文链接:https://towardsdatascience.com/5-visualisations-to-level-up-your-data-story-e131759c2f41

用python画的炫酷图形_太秀了,没想到这些既炫酷又能动的图竟然是用 Python 画的!...相关推荐

  1. 用python画的炫酷图形_推荐一个炫酷Python 手绘图形库

    https://github.com/chenjiandongx/cutecharts 今天,给大家介绍一个很酷的 Python 手绘风格可视化神包:cutecharts.和 Matplotlib . ...

  2. pr转场 卡通炫酷图形动画视频转场pr模板mogrt

    适用于开场视频.动作片.幻灯片.极限运动或舞蹈视频等等. 项目特点: 独特的过渡 4096×2304 分辨率 全彩控件 媒体占位符 包括视频教程 适用于 Premiere Pro 2021 及更高版本 ...

  3. 我用Python写了一个邮箱脚本发给班花,没想到事情闹大了...

    大家好,我是辣条. 前言 开学没多久,事又多正愁缺写博客的素材,这不马上就来了,憨憨室友又要整活 ,看在友(红)情(包)的份上必须帮忙. 我起初的想法是通过邮箱发送表白代码指令,打包成执行文件,但是不 ...

  4. python可以实现什么炫酷图形吗_我是Python小玩家,一行代码能做哪些炫酷的事情?...

    python之禅 image 一行代码启动一个Web服务 python -m SimpleHTTPServer 8080 python3 -m http.server 8080 一行代码实现变量值互换 ...

  5. python可以实现什么炫酷图形吗_如何把图片变得炫酷多彩,Python教你这样实现!...

    有趣的图片 如何能让图片变得好玩?首先需要让它动起来!可如果是多张图片,我们还可以将其拼接起来组成gif动图,可一张图怎么玩?记得之前写过一个小练习,把一张图片拆分成九宫格的分片图.那么,能否由此下手 ...

  6. python照片转彩色手绘_用PS把女生照片转成炫彩渐变手绘效果

    炫彩风格转手绘的特点就是颜色非常丰富和艳丽,尤其是头发.背景.眼珠等都需要手工添加一些绚丽的彩色,用的颜色也不能太乱,总体要感觉时尚大气.最终效果 原图 一.打开一张图片,把分辨率设置为300像素/英 ...

  7. python快速入门神器 知乎_太香了!墙裂推荐6个Python数据分析神器!!

    hello,大家好我是东哥! 用Python处理数据大家都不陌生了,属常规操作,但常规之下还是也有些暗藏技巧的,本篇东哥分享6个好玩高效的操作,帮助大家提高效率. 一.Pandas Profiling ...

  8. python常用内置函数汇总_太全了!Python3常用内置函数总结

    数学相关 abs(a) : 求取绝对值.abs(-1) max(list) : 求取list最大值.max([1,2,3]) min(list) : 求取list最小值.min([1,2,3]) su ...

  9. python程序运行按什么键_太惨!学Python方法用错,直接从入门到放弃!

    原标题:太惨!学Python方法用错,直接从入门到放弃! 从你开始学习编程的那一刻起,就注定了以后所要走的路-从编程学习者开始,依次经历实习生.程序员.软件工程师.架构师.CTO等职位的磨砺:当你站在 ...

最新文章

  1. Java 8 中 HashMap 到底有啥不同?
  2. html input image 尺寸,HTML DOM Input Image 对象
  3. boost::mpl模块实现same_as相关的测试程序
  4. 线段树/扫描线问卷调查反馈——Rmq Problem / mex(主席树),Boring Queries(二分+st表+主席树),Colorful Squares(扫描线)
  5. 自己写的几个常用到的函数
  6. 提交失败重连java_RxJava出错重连
  7. Query ajax操作!!
  8. 传统方法做分割 解析种子cues
  9. Revisiting ResNets: Improved Training and Scaling Strategies论文简述
  10. GMQ钱包积极打造并维护区块链健康生态的发展
  11. in作为介词的用法_介词at和in表示地点时的各自用法
  12. java 实现图片的裁剪
  13. 流利阅读 2019.1.30 China’s Baidu pledges to improve search service after complaint
  14. 如何实现vue表单验证cron表达式?【亲测有效】
  15. 服务器虚拟化和网络虚拟化关系,数据中心网络如何应对服务器虚拟化?
  16. 大对象数据的访问控制 (2)
  17. 芝加哥大学计算机科学,芝加哥大学计算机科学
  18. 章节2 法律法规与标准
  19. zoom走了,谁的机会来了
  20. 彻底删除mysql数据库

热门文章

  1. srio 门铃_如何使SkyBell HD门铃静音
  2. 写了个汉字转G代码工具,无描边的那种,市面上没有类似的小软件
  3. Android新手入门2016(1)--创建和运行helloworld
  4. 创造性解决arch/manjaro官方aur源下载慢办法
  5. Android刘海屏、水滴屏全面屏适配方案,海量算法高频面试题精编解析
  6. 闪店空间官网-创意优质快闪店,店中店专家
  7. pinpoint的Hbase数据库的数据优化
  8. 相对丰度柱状图matlab,R堆叠柱状图各成分连线画法:突出展示组间物种丰度变化...
  9. 第八章 用QImage高质量绘图
  10. 微信小程序如何发红包