热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

[原创]Day4.数据可视化拓展图形

Seaborn画图使用Matplotlib和Seaborn进行画图,包括箱线图热力图雷达图二元变量分布成对关系。箱线图箱线图(boxplot)又称盒式图,

Seaborn 画图

使用Matplotlib和Seaborn进行画图,包括

  • 箱线图

  • 热力图

  • 雷达图

  • 二元变量分布

  • 成对关系。

箱线图

箱线图(boxplot)又称盒式图,可以显示数据的分散情况,由五个数值点组成:最大值(max)-上界、最小值(min)-下界、中位数(median)和上下四分位数(Q1, Q3)。它可以帮我们分析出数据的差异性、离散程度和异常值等。

 # 数据准备# ⽣成0-1之间的10*4维度数据(10行,4列的数组)import numpy as npdata = np.random.normal(size=(10,4))lables = ['A', 'B', 'C', 'D']# ⽤Matplotlib画箱线图# boxplot(x,labels=None)函数,x代表绘图数据,labels是缺省值,可以为箱线图添加标签。import matplotlib.pyplot as pltplt.boxplot(data, labels=lables) #注意单词labels和lablesplt.show()# ⽤Seaborn画箱线图# boxplot(x=None,y=None,data=None)函数。data为DataFrame类型,x、y是data中的变量。import seaborn as snsimport pandas as pddf = pd.DataFrame(data, columns=lables)sns.boxplot(data=df)plt.show()

运行结果:

热力图

热力图(heat map)是一种矩阵表示方法,其中矩阵中的元素值用颜色来代表,不同的颜色代表不同大小的值。通过颜色的深浅就能直观地知道某个位置上数值的大小。另外也可以某个位置上的颜色与其他位置颜色进行比较,是一种非常直观的多元变量分析方法。

1、基本热力图

2、设置热力图区间

3、颜色差异更大的原因

4、使用Seaborn自带数据

一般使用Sarborn中的sns.heatmap(data)函数绘制,我们使用Seaborn中自带的数据集flights,该数据集记录了1949年到1960年期间,每个月的航班乘客的数量。一般可能会出网络问题导致的失败。

下载地址:https://github.com/mwaskom/seaborn-data

代码改进,将下载的数据引入进来:

数据透视表

  • 直接读入进来还是不可的 需要对表进行重塑

  • 转化为数据透视表才可以使用  hhh  蒙蔽了吧

改进代码和运行结果如下:

5、指定调色板

雷达图

雷达图(radar chart)是以从同一点开始的轴上表示的三个或多个变量的图表的形式,也是显示一对多关系的方法。在雷达图中,一个变量相对于另一个变量的显著性清晰可见。

如果我们制作一张影响购买手机的因素分析图,我们通过收集问卷采访顾客对品牌,价格,外观,硬件,拍照,电量几个方面进行打分,将统计好的因素比重用雷达图表示出来。这里使用Matplotlib进行画图,首先设置两个数组:itemsscores,它们分别保存了购买因素的名称和分数

雷达图的边框是⼀个圆形,需要计算每个坐标的角度,然后对这些数值进行设置。当画完最后⼀个点后,需要与第⼀个点连线。

因为需要计算角度,所以我们要准备angles数组;又因为需要设定统计结果的数值,所以我们要设定scores数组。并且需要在原有angles和scores数组上增加⼀位,也就是添加数组的第一个元素。

 # 数据准备import numpy as npimport pandas as pdimport matplotlib.pyplot as pltplt.rcParams['font.sans-serif'] = ['KaiTi'] # 显示中文字体•items = np.array([u"品牌", u"价格", u"外观", u"硬件", u"拍照", u"电量"]) # u:unicodescores= [88, 92, 70, 78, 79, 82]# 画图数据准备,⻆度、score和angles的状态值angles=np.linspace(0, 2*np.pi, len(items), endpoint=False) #分割圆周长scores=np.concatenate((scores,[scores[0]]))# concatenate:拼接,在原有的score和angles上加一angles=np.concatenate((angles,[angles[0]]))# ⽤Matplotlib画蜘蛛图fig = plt.figure() # 创建一个空白画布对象,添加子图可以将画板分成一行一列,形成一个绘图区ax = fig.add_subplot(111, polar=True) #设置字画布,极坐标系:Trueax.plot(angles, scores, 'o-',linewidth=2) #连线ax.fill(angles, scores, alpha=0.25) #上色ax.set_thetagrids(angles * 180/np.pi, items) #写上标签plt.show()

运行结果:

二元变量分布

如果我们想要看两个变量之间的关系,就需要用到二元变量分布。二元变量分布有多种呈现方式,之前讲解的散点图就是一种二元变量分布。

在Seaborn里,使用二元变量分布非常方便,直接用sns.jointplot(x, y, data=None, kind)函数即可。kind表示不同的视图类型:“kind=‘scatter’”代表散点图,“kind=‘kde’”代表核密度图,“kind=‘hex’ ”代表Hexbin图,它代表的是有六边形的单元画出的二维直方图的模拟。

我们在演示中使用Seaborn自带的数据集tips,这个数据集记录了不同顾客在餐厅的消费账单及小费情况。代码中total_bill保存了客户的账单金额,tip是该客户给出的小费金额。我们可以用Seaborn中的jointplot来探索这两个变量之间的关系。

 # 数据准备import seaborn as snstips = sns.load_dataset("tips")print(tips.head(10)) # head将表格中的第一行取作列名,然后取10行数据# ⽤Seaborn画二元变量分布图(散点图,核密度图,Hexbin图)sns.jointplot(x="total_bill", y="tip", data=tips, kind='scatter')sns.jointplot(x="total_bill", y="tip", data=tips, kind='kde')sns.jointplot(x="total_bill", y="tip", data=tips, kind='hex')plt.show()

同样报错,我们使用相同方式把数据引入进来。数据都到本地了,怎么玩还不是看你的思维么?所谓自己动手丰衣足食!!

引入数据

运行结果如下:

成对关系

如果想要探索数据集中的多个成对双变量的分布,可以直接采⽤sns.pairplot()函数。它会同时展示出DataFrame中每对变量的关系,另外在对角线上,能看到每个变量本身作为单变量的分布情况。pairplot()是探索性分析中的常用函数,可以很快帮我们理解变量对之间的关系。

我们使用Seaborn中自带的iris鸢尾花数据集。

鸢尾花可以分成:

  • Setosa

  • Versicolour

  • Virginica三个品种

  • 在这个数据集中,针对每⼀个品种,都有50个数据,每个数据中包括了4个属性,分别是花萼长度、花萼宽度、花瓣长度和花瓣宽度。通过这些数据,可以预测出鸢尾花卉属于三个品种中的哪一种。

 # 数据准备import seaborn as snsiris = sns.load_dataset('iris')# 用Seaborn画成对关系sns.pairplot(iris)plt.show()

⽤Seaborn中的pairplot函数来对数据集中的多个双变量的关系进行探索,如下图所示:

解析:

从图上可以看出,⼀共有 sepal_length、sepal_width、petal_length和petal_width4个变量,它们分别是花萼长度、花萼宽度、花瓣长度和花瓣宽度。这张图相当于这4个变量两两之间的关系。

第一行第一列中的图代表的是花萼长度自身的分布图,右侧的第一行第二列的这张图代表的是花萼长度与花萼宽度这两个变量之间的关系。

小作业

  • 1、Seaborn数据集中自带了car_crashes数据集,这是一个国外车祸的数据集,对这个数据集进行成对关系的探索。并用Seaborn画二元变量(x="total,y="speeding")分布图,如果想要画散点图,核密度图,Hexbin图该怎样写.

  • 2、 探索更多seaborn-data 的数据展示

  • 3、 你有应用的场景嘛?举个栗子

请添加小编,回复关键词:[数据可视化],

-今日互动-

你学会如何引入数据了吗?

欢迎文留言互动

如果对你有帮助的话

❤️来个「转发朋友圈」和「在看」,是最大的支持❤️


推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • Grafana 9 正式发布
    grafa ... [详细]
  • 百度地图离线开发demo(热力图)
    热力图主要用了bmplib插件,initMap(){this.mapnewBMap.Map(myMap);constpointnewBMap.Point(118.13 ... [详细]
  • seaborn箱线图_Seaborn线图的数据可视化
    seaborn箱线图Hello,folks!Inthisarticle,wewillbetakingtheSeaborntutorialaheadandunderstandingt ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • 安卓select模态框样式改变_微软Office风格的多端(Web、安卓、iOS)组件库——Fabric UI...
    介绍FabricUI是微软开源的一套Office风格的多端组件库,共有三套针对性的组件,分别适用于web、android以及iOS,Fab ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • 本文介绍了为什么要使用多进程处理TCP服务端,多进程的好处包括可靠性高和处理大量数据时速度快。然而,多进程不能共享进程空间,因此有一些变量不能共享。文章还提供了使用多进程实现TCP服务端的代码,并对代码进行了详细注释。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
author-avatar
手机用户2602936275
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有