Plotly+Cufflinks,交互式图表神器,一行代码GET!

前言

  • 本文将介绍如何使用Plotly+Cufflinks更简便地制作出更好的图表。
  • 这是Github上一个大神发布的资料,本人学习之后觉得非常实用,所以和大家分享。需要查看代码的童鞋指路Github:https://github.com/WillKoehrsen/Data-Analysis
  • 本文中的所有代码都是使用Jupyter notebook完成的,在使用pip命令安装了plotly和cufflinks之后,可以import使用它们。

1、Plotly+Cufflinks是什么?

  • Plotly Python包是Plotly公司开发的可视化软件的开源版本,是基于plotly.js构建的,而后者又建立在d3.js上。
  • 因为Plotly不能直接接受numpy和pandas的数据结构,所以用一个名为cufflinks的封装器来使用Pandas数据可以减少数据处理工作。
  • 这两个库的组合使用起来很简单,大部分时候可以用一行代码生成非常棒的图表,会比Matplotlib简单多了。
  • 导入库:
    • import plotly.graph_objs as go
    • import cufflinks as cf
    • from plotly.offline import iplot,init_notebook_mode
    • init_notebook_mode(connected=True)
    • cf.go_offline(connected=True)

2、花样制作各式图表

直方图、箱线图、柱状图、散点图、折线图、饼图、散点矩阵、热力图、散点3D图、气泡3D图,全部都可以用简单的一行代码搞定!

2.1、直方图

  • 直方图是绘制单一变量的首选图,下图是作者WillKoehrsen绘制的变量[‘Claps’]直方分布图:
    1.png
    1.gif

  • 代码非常简单,就是在data之后加一个iplot后缀,并添加相应的参数。图表是交互式的,把鼠标放在bins可以获得相应数据。

2.1.1、分组直方图

  • 绘制分组直方图只需要添加参数[barmode=‘group’]即可,非常简便。
    2.png
    2.gif

2.1.2、叠加直方图

  • 绘制叠加直方图则添加参数[barmode=‘overlay’]。
    3.png

2.1.3、小结

  • 代码:df[‘value’].iplot(kind=‘hist’,bins= ,xTitle= ,yTitle= ,title= )
  • 其他参数:linecolor、opacity(透明度)、bargap(间隔)、histnorm、barmode

2.2、柱状图

  • 对于条形图,需要先应用聚合函数,将x轴变量设为索引,然后再使用iplot绘图。例如作者以[‘publication’]进行分组并计算变量[‘fans’]的数量,再进行图形展示:
    4.png

  • 如果绘制多个分类的柱状图,则相应添加多个y轴变量即可,非常简单!
    5.png

2.2.1、双坐标轴

  • 如果两个分组变量的范围相差太大,我们又想把它们放在同一个坐标轴上,则可以设立y2轴。
  • 设立y2轴只需要添加参数secondary_y。
    6.png

2.2.2、小结

  • 代码:df.iplot(kind=‘bar’,xTitle= ,yTitle= ,title= )
  • 其他参数:secondary_y、secondary_y_title

2.3、箱线图

  • 箱线图的制作和直方图类似,不过要把kind参数换成[kind=‘box’]。
    7.png
    4.gif

2.3.1、分类箱线图

  • 如果我们需要制作分类箱线图,则需要先制作一个透视表。
    8.png

2.3.2、小结

  • 代码:df.ilpot(kind=‘box’,xTitle= ,yTitle= ,title= )、df.pivot(columns= ,values= )
  • 其他参数:colorscale、layout

2.4、散点图和折线图

  • 制作散点图和折线图的话,和前面3个图不同,需要将kind参数更改为mode参数,不然会报错。
  • x轴变量默认为索引,但可以通过参数[x=’ ']进行更改。
    9.png

2.4.1、增加拟合线

  • 增加拟合线相关参数:bestfit=True
    5.gif

2.4.2、增加文字注释

  • 利用text参数增加文字注释。
  • 作者利用HTML写了一个例子:
    10.png

2.4.3、分类散点图

  • 制作分类散点图可以通过categories参数添加:
  • 此外,也可以通过size参数对散点做进一步的区分,但size参数所带变量必须是数值变量。
    11.png

2.4.4、添加参考区域或参考线

  • 使用hline和vline参数可以添加线,使用vspan和hspan参数可以添加区域,和Matplotlib语法是类似的~
    12.png

2.4.5、小结

  • 相关参数:bestfit、text、categories、symbol(散点形状设置)、size(散点大小)、xrange(x轴范围)、yrange(y轴范围)、hline(水平参考线)、vline(垂直参考线)、hspan(水平参考区域)、vspan(垂直参考区域)

2.5、散点矩阵和热力图

  • 导入画图库:import plotly.figure_factory as ff
  • 散点矩阵画图函数:ff.create_scatterplotmatrix();热力图画图函数:ff.create_annotated_heatmap()
    13.png

2.6、饼图

  • 要制作饼图,需要先用聚合函数对变量进行分类,但不能设置分类变量为索引,否则无法画图。
    14.png

2.7、3D图形

  • 除了以上图形,plotly也可以画好看的3D图形,比如曲面图、3D散点图等。
    dai

3、总结

  • 比起Matplotlib和seaborn,Plotly可以快速地实现交互可视化,并输出令人愉悦的图形,让我们能更深入地探索数据细节。
                                </div><div data-report-view="{&quot;mod&quot;:&quot;1585297308_001&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/weixin_46752708/article/details/105272776&quot;,&quot;extend1&quot;:&quot;pc&quot;,&quot;ab&quot;:&quot;new&quot;}"><div></div></div>
            <link href="https://csdnimg.cn/release/phoenix/mdeditor/markdown_views-60ecaf1f42.css" rel="stylesheet">
                            </div>
</article>

热门文章

暂无图片
编程学习 ·

使用ssh连接window和 oracle virtualBox中的虚拟机 保姆级教程

目录环境基本连接步骤进一步配置hostname环境虚拟机 VM Virtualbox 6.1 虚拟机系统 debain 10.3虚拟机网卡:1.虚拟机网卡2.主机 windows 10配置好以上环境后开始配置虚拟机,当然host-only网络适配器的ip地址可以自己设置。 基本连接步骤 第一步: 虚拟机中运行 ps -e | gr…
暂无图片
编程学习 ·

什么是嵌入式培养?要不要选嵌入式培养?

前言 马上要高考了,高考完后势必要面临选专业,本人作为大二的计算机专业老油条,要为想选计算机专业的小萌新们科普科普,什么是嵌入式培养。嵌入式培养的概述 这里的嵌入式,说白了,就是要把社会上的东西,嵌入到学校的教学里 这个概念本来是没有的,但是上级领导认为,计算…
暂无图片
编程学习 ·

Go map的概念及三种使用方法

map的概念map 的基本介绍map 是 key-value 数据结构,又称为字段或者关联数组。类似其它编程语言的集合,基本语法var map 变量名 map[keytype]valuetypekey 可以是什么类型golang 中的 map,的 key 可以是很多种类型,比如 bool, 数字,string, 指针, channel , 还可以是只包…
暂无图片
编程学习 ·

实战:SpringBoot分布式验证码登录方案

本文大纲 文章目录本文大纲前言前后端未分离的验证码登录方案验证码生成流程如下登录验证流程如下前后端分离的验证码登录方案验证码生成流程如下登录验证流程如下动手撸轮子Kaptcha介绍新建项目并加入依赖Redis配置类`RedisConfig`验证码配置类`KaptchaConfig`验证码控制层`Ca…
暂无图片
编程学习 ·

【数据结构】数据结构三要素

数据结构三要素 数据结构的三要素包括数据逻辑结构、数据存储结构和数据的运算。 数据逻辑结构 数据的逻辑结构是指数据元素之间的逻辑关系,即从逻辑关系上描述数据。它与数据的具体存储形式无关,是独立于计算机的。数据逻辑结构通常分为线性结构和非线性结构。典型的数据结构…
暂无图片
编程学习 ·

记录 之 最近阅读的动作识别(action recognition)工作

介绍:其中C3D是3d卷积的比较有意义的开端,I3d在C3D之后做了一系列研究,包括引入双流网络,和LSTM网络,并使用已经训练好的2D图像分类模型的参数维数扩充后用做3D网络的预训练模型。S3D是在I3D的基础上,探索了卷积拆分,使得模型的量级下降,并在后续的工作中加入了Graph C…
暂无图片
编程学习 ·

【GNURadio RTL-SDR】双RTL-SDR信号源的FM调频广播接收机

文章目录1. 前言2. 实验过程2.1 制作流图2.2 RTL-SDR的设备参数1. 前言 两个RTL-SDR的dongle“电视棒”,芯片 RTL2832U + R820T ,淘宝50左右那种能收FM和我国DTMB频段,想都接到同一台电脑去用软件无线电(GNURadio)的方式收多个FM调频广播信号。 2. 实验过程 在谷歌搜了不少…
暂无图片
编程学习 ·

Python简介和安装

Python简介 Python是一种跨平台的计算机程序设计语言。是由荷兰著名的“龟叔(Guido van Rossum)在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言,是用龟叔喜欢看的一个马戏团来命名。在TIOBE排行榜中Python,C语言和JAVA一直位于前三甲,是非常流行的编程语言…
暂无图片
编程学习 ·

Arduino项目实战——基于Arduino【智能垃圾桶】设计

Arduino项目实战——基于Arduino【智能垃圾桶】设计第一次接触Arduino是在大一的时候,距离现在已经五年,当时一个简单的“电子琴”项目就让我抓耳挠腮,根本不具备“面向百度编程”能力的我,用老师提供的文档跟我的组员用了好几天,才让Arduino跟蜂鸣器想起一首简单版的《小…
暂无图片
编程学习 ·

抖音上卖什么最热销?抖音上最热销的产品是什么?

抖音带货卖什么类型产品热门,抖音带货做哪个领域好自去年六月第一批100个内测账号入驻以来,抖音购物车至今已运营一年有余。随着这一年来功能打磨、生态打通等不断完善,抖音购物车已成为KOL带货变现的绝佳途径之一。第一种,在抖音里卖减肥产品。现在的人生活条件都比较好,…
暂无图片
编程学习 ·

ubuntu python 升级 和pip匹配问题

ubuntu16.04,卸载系统自带的python3.5引发了一宗惨案,好在最终完美解决https://blog.csdn.net/qq_29935433/article/details/105568942?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribut…
暂无图片
编程学习 ·

ssm

目录User.javaUserController.javaUserDao.javaUserService.javaIUserService.javaUserMapper.xmlapplicationContext.xmldb.propertiesspring-mvc.xmlapplicationContext.xmlweb.xmlfailure.jspIndex.jspok.jsp pring 1.控制反转-》控制权的转移 2.依赖注入 DI 3.面向切面 aop…
暂无图片
编程学习 ·

五篇机器阅读理解论文(Match-LSTM+Ptr,DCN,R-Net,QANet)介绍

以close-domain为例,MRC任务就是给定一篇文章和一些与文章相关的问题,要求模型给出问题的答案 MRC按照问答的形式不同大致可以分成四种任务填空型 多项选择型 片段抽取型 自由答案型首先来看一看数据集 填空型问答 所谓填空型问答是指给定一篇文章和一个缺失某个单词的句子作…
暂无图片
编程学习 ·

ssm框架下简单的增删改查实现

ssm框架下简单的增删改查实现 代码太多就不逐一展示了,到目前为止这几个类之间的关系还是有点不太清楚。 package controller;import bean.User; import dao.UserDao; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype…
暂无图片
编程学习 ·

MyBatis中#{}和${}的区别详解 区别

区别1.#将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id".2.将传入的数据直接显示生成在sql中。如:or…
暂无图片
编程学习 ·

u-boot2020.04移植(1、u-boot的编译)

最近公司项目用到了xilinx的zynq7000 soc,开发方式有所不同,驱动的数据都是通过设备树来提供,以前没接触过,所以想系统的学习一下相关的内容,但是手头只有一块三星的s5pv210开发板,使用的u-boot和linux系统不支持设备树,只好自己移植,以此记录一下移植过程,加深理解与…
暂无图片
编程学习 ·

Java数据结构--循环链表

一、简介 1.1 概念对于单链表而言,最后一个结点的地址为空,如果表示最后一个结点的指针域指向头结点,整个链表形成一个环,就构成了单循环链表。 与单链表相比,只是将原来判断指针是否为空变为判断是否是头指针,没有其他的变化。 访问单循环链表某一结点,可以从任何一个结…
暂无图片
编程学习 ·

Asp.Net Core中取得物理路径

从ASP.NET Core RC2开始,可以通过注入 IHostingEnvironment 服务对象来取得Web根目录和内容根目录的物理路径,如下所示: using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Mvc; namespace AspNetCorePathMapping {public class HomeController : Controller…