Day4.数据可视化拓展图形的绘制

数据可视化,更多拓展图形的绘制,以及如何引入本地数据集

使用 MatplotlibSeaborn 进行画图,包括

  • 箱线图

  • 热力图

  • 雷达图

  • 二元变量分布

  • 成对关系

箱线图

箱线图(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、 你有应用的场景嘛?举个栗子

Day4.数据可视化拓展图形的绘制相关推荐

  1. 【数据可视化(图形绘制)攻略】——配对样本T检验/Wilcoxon配对秩检验

    配对样本T检验/Wilcoxon配对秩检验的数据可视化(图形绘制)攻略 ggpubr包的应用 配对T检验和Wilcoxon配对非参数检验的图形可视化均可以应用ggpubr包,简单好用.可达到如下效果哟 ...

  2. LightningChart数据可视化工具图形控件教程51-BarSeries3D

    BarSeries3D 演示示例: Horizontal bars; Bars, grouping; Bars, manhattan BarSeries3D 可以以3D视图实现柱状形数据可视化. 柱状 ...

  3. LightningChart数据可视化工具图形控件教程48-SurfaceGridSeries3D(曲线网格系列3D)_续

    LightningChart数据可视化工具图形控件教程48 SurfaceGridSeries3D(曲线网格系列3D)_续 轮廓线 轮廓线可以快速表明高度数据,而不用采取调色板填充来填充曲面.轮廓线可 ...

  4. python数据可视化读取excell文件绘制图像详细教程

    python数据可视化读取excell文件绘制图像详细教程 python数据可视化 python库中的基本用法 import pandas as pd # 调用pandas库 来读取excell的文件 ...

  5. Python数据可视化(三)绘制统计图形大全

    3.1 柱状图 以 Python 代码的形式讲解柱状图的绘制原理,这里重点讲解 bar()函数的使用方法. 代码: import matplotlib as mpl import matplotlib ...

  6. 微信小程序(数据可视化、Canvas、绘制线段、图形、太极图、文本、图像、渐变、变形)

    一.数据可视化 1数据可视化概述 数据可视化Data Visualization:就是指将结构或非结构数据转换成适当的可视化图表,然后将隐藏在数据中的信息直接展现于人们面前. 2应用场景 数据报表 特 ...

  7. 文件可视化编辑_高维数据可视化必备图形平行坐标图

    作者:科研猫 | 小飞鼠 责编:科研猫 | 依米 如果我们想比较某个数值在不同分组之间的变化差异.或者随着时间序列的变化趋势,往往会用到折线图.折线图是在我们的科研绘图当中最为常用的图形之一. 正如在 ...

  8. python柱形图代码_Python数据可视化:基于matplotlib绘制「条形图」

    简介 条形图 (bar chart)是用宽度相同条形的高度或长短来表示数据多少的图形,可以横置或纵置.纵置时的条形图也称为 柱形图 (column chart). 绘制条形图 1 import mat ...

  9. python画条形图-Python数据可视化:基于matplotlib绘制「条形图」

    简介 条形图 (bar chart)是用宽度相同条形的高度或长短来表示数据多少的图形,可以横置或纵置.纵置时的条形图也称为 柱形图 (column chart). 绘制条形图 1 import mat ...

  10. 数据可视化——用Excel巧妙绘制图表及在论文中的排版技巧

    一.用Excel绘制饼图 最适合采用饼图的情形: ①只有一个数据系列(单分类数据): ②任何数据值都大于零: ③类别不超过七个,因为七个以上的扇区会使图表难以阅读: ④划分的类别最好是完整的,一般不完 ...

最新文章

  1. linux firefox xvfb,自动化测试之linux+xvfb+selenium+firefox+python测试环境搭建与测试
  2. Nova 启动虚拟机流程解析
  3. 2017年网易校招题 买苹果
  4. 配置ssl证书_Mysql配置ssl证书
  5. 传聊天宝团队解散 罗永浩已退出股东行列
  6. vb把窗体嵌入桌面底层_桌面透明便签插件便签软件
  7. 微信小程序背景音乐官方实例代码无效问题解决及音乐src获取方法
  8. html表格支持响应,HTML表格+ JSON响应+选择框
  9. 如何用od去手动脱壳
  10. 文档服务器拓扑图,服务器网络结构拓扑图
  11. dispatch source理解
  12. TMS运输管理系统,对车辆管理、物流运输、效率提升有哪些优势?
  13. 为了面试能通过,我要看完这75道面试题(下)
  14. 手机如何远程控制和监控PLC
  15. 约瑟夫环数据结构c语言程序,约瑟夫环问题详解(C语言链表实现)
  16. 利用Python及OpenCv 识别车牌号
  17. 记Google应用内商品(消耗品)支付小坑
  18. Golang学习笔记08 链表
  19. 关于iTunes随机播放和我所不知道的自己
  20. Coursera | Andrew Ng (01-week-1-1.2)—What is a Neural Network?

热门文章

  1. git 创建本地仓库,再关联远程创库
  2. 【高级篇 / DNS】(7.0) ❀ 04. FortiGuard 动态 DNS (DDNS) ❀ FortiGate 防火墙
  3. office word 使用快捷键ctrl c ctrl v提示文件未找到:MathPage.WLL
  4. 【Java并发基础】Java内存模型解决有序性和可见性
  5. 【web前端】第二天-HTML标签(下)
  6. Vue学习(学习打卡Day13)
  7. 使用js jquery去搭建完成京东购物车
  8. 100本名著浓缩而成的100句话
  9. oracle form视频,深入浅出Oracle 之Form开发
  10. mysql 不等于 优化_Mysql优化