前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

作者: 我被狗咬了

在谈及数据可视化的时候,我们通常都会使用到matplotlylib,pyecharts这些可视化的手段。但是,今天我主要来介绍Plotly这款可视化的库。

这个库是使用js写的前端,所以画出来的图非常的漂亮,不像matplotlylib画出来的那么生硬。plotly提供了Python的支持库,使用pip直接安装就可以:

  1. pip install plotly

在python里面使用plotly画图非常的简单,我们先来看一个简单的柱状图例子:

  1. import plotly.graph_objects as go
  2. animals=['giraffes', 'orangutans', 'monkeys']
  3.  
  4. fig = go.Figure(data=[
  5. go.Bar(name='SF Zoo', x=animals, y=[20, 14, 23]),
  6. go.Bar(name='LA Zoo', x=animals, y=[12, 18, 29])
  7. ])
  8. # Change the bar mode
  9. fig.update_layout(barmode='group')
  10. fig.show()

使用起来非常的方便,和matplotlylib画图步骤很像,下面我们再来看看一组关于个性化显示的例子:

利用plotly express自带的数据集,画一个简单的柱状图:

  1. import plotly.express as px
  2. data_canada = px.data.gapminder().query("country == 'Canada'")
  3. fig = px.bar(data_canada, x='year', y='pop')
  4. fig.show()

这样的图看上去还是比较素,我们可以使用参数来自定义条形图的样式:

  1. import plotly.express as px
  2. data = px.data.gapminder()
  3.  
  4. data_canada = data[data.country == 'Canada']
  5. fig = px.bar(data_canada, x='year', y='pop',
  6. hover_data=['lifeExp', 'gdpPercap'], color='lifeExp',
  7. labels={'pop':'population of Canada'}, height=400)
  8. fig.show()

调整样式后会明显发现数据展示会友好很多,能够清楚的看到数据的增长程度。

除了柱状图之外还有其他的散点图,折线图,饼状图,条形图,箱型图等等(也包含一些热图,登高图,地图分布等等)。

下面,我们使用Python画一些Plolty基本图的Demo:

(大家如果有需要用Plotly的建议收藏哦!)

散点图

散点图核心的价值在于发现变量之间的关系,千万不要简单地将这个关系理解为线性回归关系。变量间的关系有很多,如线性关系、指数关系、对数关系等等,当然,没有关系也是一种重要的关系。散点图更偏向于研究型图表,能让我们发现变量之间隐藏的关系为我们决策作出重要的引导作用。

  1. import plotly.express as px
  2. fig = px.scatter(x=[0, 1, 2, 3, 4], y=[0, 1, 4, 9, 16])
  3. fig.show()

  1. import plotly.express as px
  2. df = px.data.iris() # px自带数据集
  3. fig = px.scatter(df, x="sepal_width", y="sepal_length", color="species",
  4. size='petal_length', hover_data=['petal_width'])
  5. fig.show()

折线图

折线图可以显示随时间(根据常用比例设置)而变化的连续数据,因此非常适用于显示在相等时间间隔下数据的趋势。比如我们经常看到的监控数据图,一般都是折线图。

  1.  
  1. import plotly.graph_objects as go
  2. animals = ['giraffes', 'orangutans', 'monkeys']
  3.  
  4. fig = go.Figure(data=[
  5. go.Scatter(name='SF Zoo', x=animals, y=[20, 14, 23]),
  6. go.Scatter(name='LA Zoo', x=animals, y=[12, 18, 29])
  7. ])
  8. fig.show()

  1. import plotly.graph_objects as go
  2. import numpy as np
  3. np.random.seed(1)
  4.  
  5. N = 100
  6. random_x = np.linspace(0, 1, N)
  7. random_y0 = np.random.randn(N) + 5
  8. random_y1 = np.random.randn(N)
  9. random_y2 = np.random.randn(N) - 5
  10.  
  11. # Create traces
  12. fig = go.Figure()
  13. fig.add_trace(go.Scatter(x=random_x, y=random_y0,
  14. mode='lines',
  15. name='lines'))
  16. fig.add_trace(go.Scatter(x=random_x, y=random_y1,
  17. mode='lines+markers',
  18. name='lines+markers'))
  19. fig.add_trace(go.Scatter(x=random_x, y=random_y2,
  20. mode='markers', name='markers'))
  21.  
  22. fig.show()

饼图

饼图主要用于总体中各组成部分所占比重的研究,可以很直观地分析项目的组成结构与比重,一目了然地进行描述重量分成。比如我们统计各种开销占总支出多少的时候,这个时候使用饼图可以很明显看出开销的大头。

  1. import plotly.express as px
  2. # This dataframe has 244 lines, but 4 distinct values for `day`
  3. df = px.data.tips()
  4. fig = px.pie(df, values='tip', names='day')
  5. fig.show()

  1. import plotly.express as px# plotly的自带数据集,类型:DataFramedf = px.data.gapminder().query("year == 2007").query("continent == 'Europe'")
  2. df.loc[df['pop'] < 2.e6, 'country'] = 'Other countries' # Represent only large countries
  3. fig = px.pie(df, values='pop', names='country', title='Population of European continent')
  4. fig.show()

TreeMap(矩形树图)

矩形树图适合展现具有层级关系的数据,能够直观体现同级之间的比较。一个Tree状结构转化为平面空间矩形的状态,就像一张地图,指引我们发现探索数据背后的故事。

矩形树图采用矩形表示层次结构里的节点,父子节点之间的层次关系用矩形之间的相互嵌套隐喻来表达。从根节点开始,屏幕空间根据相应的子节点数目被分为多个矩形,矩形的面积大小通常对应节点的属性。每个矩形又按照相应节点的子节点递归的进行分割,知道叶子节点为止。

  1. import plotly.express as px
  2. fig = px.treemap(
  3. names = ["Eve","Cain", "Seth", "Enos", "Noam", "Abel", "Awan", "Enoch", "Azura"],
  4. parents = ["", "Eve", "Eve", "Seth", "Seth", "Eve", "Eve", "Awan", "Eve"]
  5. )
  6. fig.show()

水平柱状图

和纵向柱状图一样,都是用来列举和比较多个个体之间的差值,通过柱状图的长短可以很明显看出数据之间的差别。

  1. import plotly.graph_objects as go
  2. # 修改水平参数即可
  3. fig = go.Figure(go.Bar(
  4. x=[20, 14, 23],
  5. y=['giraffes', 'orangutans', 'monkeys'],
  6. orientation='h'))
  7.  
  8. fig.show()

箱型图

箱形图(Box-plot)又称为盒式图或箱线图,是一种用作显示一组数据分散情况资料的统计图。因形状如箱子而得名。在各种领域也经常被使用,常见于品质管理。它主要用于反映原始数据分布的特征,还可以进行多组数据分布特征的比较。

  1. import plotly.express as px
  2. df = px.data.tips()
  3. fig = px.box(df, x="time", y="total_bill")
  4. fig.show()

等高线图

有二维、三维等高线图。在数据分析中,高度表示为该点的数量或出现次数,该指标相同则在一条环线(或高度)处。

  1. import plotly.graph_objects as go
  2.  
  3. fig = go.Figure(data =
  4. go.Contour(
  5. z=[[10, 10.625, 12.5, 15.625, 20],
  6. [5.625, 6.25, 8.125, 11.25, 15.625],
  7. [2.5, 3.125, 5., 8.125, 12.5],
  8. [0.625, 1.25, 3.125, 6.25, 10.625],
  9. [0, 0.625, 2.5, 5.625, 10]]
  10. ))
  11. fig.show()

热图

热图是指用热谱图展示用户在网站上的行为。浏览量大、点击量大的地方呈红色,浏览量小、点击量少的地方呈无色、蓝色。常见热图共有点击热图、注意力热图、分析热图、对比热图、分享热图、浮层热图和历史热图等七种。

  1. import plotly.express as px
  2. data=[[1, 25, 30, 50, 1], [20, 1, 60, 80, 30], [30, 60, 1, 5, 20]]
  3. fig = px.imshow(data,
  4. labels=dict(x="Day of Week", y="Time of Day", color="Productivity"),
  5. x=['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'],
  6. y=['Morning', 'Afternoon', 'Evening']
  7. )
  8. fig.update_xaxes(side="top")
  9. fig.show()

三元图

三元图,又称三元相图(Ternary plot)有三个坐标轴,它的三个坐标轴“首尾相接”成夹角为60度的等边三角形。“元”即成分,或部分,三元图主要用来展示不同样本的三种成分的比例,在物理化学中比较常见。

  1. import plotly.express as px
  2. df = px.data.election()
  3. fig = px.scatter_ternary(df, a="Joly", b="Coderre", c="Bergeron")
  4. fig.show()

雷达图

雷达图以二维的形式展现了多维数据,使观察者可以一目了然地得知对象在各种指标上的强弱,最典型的就是游戏中衡量一个角色多维度的能力值。

  1. import plotly.express as px
  2. import pandas as pd
  3. df = pd.DataFrame(dict(
  4. r=[1, 5, 2, 2, 3],
  5. theta=['processing cost','mechanical properties','chemical stability',
  6. 'thermal stability', 'device integration']))
  7. fig = px.line_polar(df, r='r', theta='theta', line_close=True)
  8. fig.show()

极坐标图

极坐标图主要作用就是可在一张图上绘出整个频率域的频率响应特性。

  1. import plotly.express as px
  2. df = px.data.wind()
  3. fig = px.scatter_polar(df, r="frequency", theta="direction")
  4. fig.show()

瀑布图

瀑布图,因为形似瀑布流水而称之为瀑布图( Waterfall Plot)。此种图表采用绝对值与相对值结合的方式,适用于表达数个特定数值之间的数量变化关系。

  1. import plotly.graph_objects as go
  2.  
  3. fig = go.Figure(go.Waterfall(
  4. name = "", orientation = "v",
  5. measure = ["relative", "relative", "total", "relative", "relative", "total"],
  6. x = ["Sales", "Consulting", "Net revenue", "Purchases", "Other expenses", "Profit before tax"],
  7. textposition = "outside",
  8. text = ["+60", "+80", "", "-40", "-20", "Total"],
  9. y = [60, 80, 0, -40, -20, 0],
  10. connector = {"line":{"color":"rgb(63, 63, 63)"}},
  11. ))
  12.  
  13. fig.update_layout(
  14. title = "Profit and loss statement 2020",
  15. showlegend = True
  16. )
  17.  
  18. fig.show()

漏斗图

一般表述转化率(如营销客户转化),由上而下代表不同层级,转化率逐级降低并形成漏斗形状。

  1. import plotly.express as px
  2. data = dict(
  3. number=[39, 27.4, 20.6, 11, 2],
  4. stage=["Website visit", "Downloads", "Potential customers", "Requested price", "invoice sent"])
  5. fig = px.funnel(data, x='number', y='stage')
  6. fig.show()

气泡分布图(含配置底图)

  1. import plotly.express as px
  2. df = px.data.gapminder().query("year==2007")
  3. fig = px.scatter_geo(df, locations="iso_alpha", color="continent",
  4. hover_name="country", size="pop",
  5. projection="natural earth")
  6. fig.show()

如果你处于想学Python或者正在学习Python,Python的教程不少了吧,但是是最新的吗?

说不定你学了可能是两年前人家就学过的内容,在这小编分享一波2020最新的Python教程。

以上这些教程小编已经为大家打包准备好了,希望对正在学习的你有所帮助!

获取方式,私信小编 “ 资料 ”,即可免费获取哦!

用Python的Plotly画出炫酷的数据可视化(含各类图介绍,附代码)的更多相关文章

  1. 手把手教你做一个python+matplotlib的炫酷的数据可视化动图

    1.效果图 2.注意: 上述资料是虚拟的,为了学习制作动图,构建的. 仅供学习, 不是真实数据,请别误传. 当自己需要对真实数据进行可视化时,可进行适当修改. 3.代码: #第1步:导出模块,固定 i ...

  2. Python利用Plotly实现对MySQL中的数据可视化

    Mysql表数据: demo.sql内容 create table demo( id int ,product varchar(50) ,price decimal(18,2) ,quantity i ...

  3. python运用turtle 画出汉诺塔搬运过程

    python运用turtle 画出汉诺塔搬运过程 1.打开 IDLE 点击File-New File 新建立一个py文件 2.向py文件中输入如下代码 import turtle class Stac ...

  4. Android绘图机制(四)——使用HelloCharts开源框架搭建一系列炫酷图表,柱形图,折线图,饼状图和动画特效,抽丝剥茧带你认识图表之美

    Android绘图机制(四)--使用HelloCharts开源框架搭建一系列炫酷图表,柱形图,折线图,饼状图和动画特效,抽丝剥茧带你认识图表之美 这里为什么不继续把自定义View写下去呢,因为最近项目 ...

  5. 利用R语言制作出漂亮的交互数据可视化

    利用R语言制作出漂亮的交互数据可视化 利用R语言也可以制作出漂亮的交互数据可视化,下面和大家分享一些常用的交互可视化的R包. rCharts包 说起R语言的交互包,第一个想到的应该就是rCharts包 ...

  6. 现在有一个长度20的SET,其中每个对象的内容是随机生成的字符串,请写出遍历删除LIST里面字符串含"2"的对象的代码。

    现在有一个长度20的SET,其中每个对象的内容是随机生成的字符串,请写出遍历删除LIST里面字符串含"2"的对象的代码. public class RemoveTwo { //le ...

  7. activate-power-mode,让你在Python编码中,感受炫酷的书写特效!

    Atom Atom 是github专门为程序员推出的一个跨平台文本编辑器,具有简洁和直观的图形用户界面,并有很多有趣的特点:支持CSS,HTML,JavaScript等网页编程语言.说到这里大家以为我 ...

  8. 从BUG工具redmine上获取数据后借助python模块pycha 画出BUG分析类报表

    整体代码比较冗长,但是很好读.写的方法全是按照BUG分类去写的.所以写死了,凑合看吧,画出饼图,树状图和生成对应的数据excel,希望大家举一反三能帮助自己分析BUG #__author__ = 'x ...

  9. 有了这个开源 Java 项目,开发出炫酷的小游戏好像不难?

    本文适合有 Java 基础知识的人群,跟着本文可学习和运行 Java 的游戏. 本文作者:HelloGitHub-秦人 HelloGitHub 推出的<讲解开源项目>系列,今天给大家带来一 ...

随机推荐

  1. 《Flutter 动画系列》组合动画

    老孟导读:在前面的文章中介绍了 <Flutter 动画系列>25种动画组件超全总结 http://laomengit.com/flutter/module/animated_1/ < ...

  2. ARDUINO UNO数字引脚端口上电后不稳定状态。

    ARDUINO UNO数字引脚端口上电后不稳定状态. 在使用4*4矩阵键盘时,遇到了输入端的电平无法稳定,一直被识别为高电平. 在发现这一问题后,首先检查程序是否出错.检查后发现程序没有任何问题. 于 ...

  3. Activiti工作流框架学习笔记(二)之springboot2.0整合工作流Activiti6.0

    以前在工作当中做过不少与工作流Activiti有关的工作,当时都是spring集成activiti5.22的项目,现在回过头去看,其实版本已经稍微老了,因此,基于先前的工作经验,决定用较新版本的技术来 ...

  4. 多源第k短路 (ford + 重新定义编号) / 出发点、终点确定的第k短路 (Spfa+ 启发搜索)

    第k短路 Description 一天,HighLights实在是闲的不行,他选取了n个地点,n各地点之间共有m条路径,他想找到这m条路径组成的第k短路,你能帮助他嘛? Input 第一行三个正整数, ...

  5. oracle实现分页功能 limit功能例子

    oracle数据库不支持mysql中limit功能,但可以通过rownum来限制返回的结果集的行数,rownum并不是用户添加的字段,而是oracle系统自动添加的. 记录两种常用方法: (1)使查询 ...

  6. SpringBoot系列之RabbitMQ使用实用教程

    SpringBoot系列之RabbitMQ使用实用教程 @ 目录 1. 消息队列概述 1.1 MQ的概述 1.2 MQ目的地形式 2. 消息队列实现方式 2.1 常见MQ框架 2.2 MQ实现方式 3 ...

  7. Java反射(六)纯面向接口编程的简单框架实践

    我们知道在使用MyBatis开发时,只需要添加DAO接口和对应的映射XML文件,不需要写DAO的实现类,其实底层是通过动态代理实现. 本文将使用前几篇文章的知识点实现一个纯面向接口编程的简单框架,与M ...

  8. MTK Android Driver :Camera

    MTK Android Driver :camera 1.相关代码位置:mediatek\config\XXXX(红色字为具体的项目名) 文件:ProjectConfig.mk CUSTOM_KERN ...

  9. hadoop(五)scp命令copy文件和配置(完全分布式准备二)|7

    机器的克隆参考centos7克隆ip|机器名|映射关系|别名配置(hadoop完全分布式准备一) 那么问题来了,如果我们有30台机器,之间可以互相访问,那我们如何快速安装配置环境如jdk hadoop ...

  10. ORCAD常用元件库说明

    以下是ORCAD自带库文件的说明,路径:Cadence\Cadence_SPB_16.6\tools\capture\library 1' AMPLIFIER.OLB共182个零件,存放模拟放大器IC ...