Matplotlib学习---用seaborn画联合分布图(joint plot)
有时我们不仅需要查看单个变量的分布,同时也需要查看变量之间的联系,这时就需要用到联合分布图。
这里利用Jake Vanderplas所著的《Python数据科学手册》一书中的数据,学习画图。
数据地址:http://raw.githubusercontent.com/jakevdp/marathon-data/master/marathon-data.csv
先来看一下这个数据文件(此处只摘取部分):
age gender split final
0 33 M 01:05:38 02:08:51
1 32 M 01:06:26 02:09:28
2 31 M 01:06:49 02:10:42
3 38 M 01:06:16 02:13:45
4 31 M 01:06:32 02:13:59
5 31 M 01:06:13 02:14:11
6 27 M 01:06:40 02:14:28
7 31 M 01:06:31 02:15:16
8 30 M 01:05:39 02:15:57
9 30 M 01:05:40 02:16:39
10 26 M 01:08:10 02:18:18
... ... ... ...
37220 52 M 03:20:00 08:46:04
37221 53 M 03:40:34 08:46:39
37222 60 M 03:39:16 08:46:48
37223 57 M 03:47:08 08:46:58
37224 61 M 03:32:20 08:47:25
37225 41 M 03:43:25 08:49:12
37226 24 M 03:34:01 08:49:36
37227 79 M 03:28:31 08:49:46
37228 24 W 03:35:21 08:50:47
37229 60 W 03:49:33 08:50:58
37230 50 W 03:43:48 08:52:14
这个数据展示的是各年龄和性别的人跑马拉松比赛所用的时间(半程split和全程final)。
让我们来画一个联合分布图,看一下半程和全程时间的分布情况。
联合分布图: sns.jointplot(x,y,data=...,kind=...)
这里需要对数据做的处理工作是把半程和全程的时间转换成秒,因为时间的格式是固定的,因此写了一个用于时间转换的helper function。
代码如下:
import pandas as pd
from matplotlib import pyplot as plt
import seaborn as sns
marathon=pd.read_csv(r"http://raw.githubusercontent.com/jakevdp/marathon-data/master/marathon-data.csv") marathon["split"]=marathon["split"].astype(str)
marathon["final"]=marathon["final"].astype(str) def convert_time_to_sec(time):
"""convert hh:mm:ss to seconds"""
hour=int(time[:2])
minute=int(time[3:5])
sec=int(time[6:])
total_sec=hour*3600+minute*60+sec
return total_sec marathon["split_sec"]=[convert_time_to_sec(i) for i in marathon["split"]]
marathon["final_sec"]=[convert_time_to_sec(i) for i in marathon["final"]] sns.jointplot("split_sec","final_sec",data=marathon) plt.show()
图像如下:

可以看出,如果数据点位于对角线上,说明半程所用的时间正好是全程的一半。但是,大部分数据点都位于对角线上方,这说明大部分人后半程用的时间要比前半程多,也就是越跑越慢。
此外,如果将kind参数设置为reg,图像还会显示拟合线。
Matplotlib学习---用seaborn画联合分布图(joint plot)的更多相关文章
- Matplotlib学习---用seaborn画直方图,核密度图(histogram, kdeplot)
由于直方图受组距(bin size)影响很大,设置不同的组距可能会产生完全不同的可视化结果.因此我们可以用密度平滑估计来更好地反映数据的真实特征.具体可参见这篇文章:https://blog.csdn ...
- Matplotlib学习---用seaborn画矩阵图(pair plot)
矩阵图非常有用,人们经常用它来查看多个变量之间的联系. 下面用著名的鸢尾花数据来画一个矩阵图.从sklearn导入鸢尾花数据,然后将其转换成pandas的DataFrame类型,最后用seaborn画 ...
- Matplotlib学习---用wordcloud画词云(Word Cloud)
画词云首先需要安装wordcloud(生成词云)和jieba(中文分词). 先来说说wordcloud的安装吧,真是一波三折.首先用pip install wordcloud出现错误,说需要安装Vis ...
- Matplotlib学习---用mplot3d画莫比乌斯环(Mobius strip)
mplot3d是matplotlib里用于绘制3D图形的一个模块.关于mplot3d 绘图模块的介绍请见:https://blog.csdn.net/dahunihao/article/details ...
- Matplotlib学习---用matplotlib画直方图/密度图(histogram, density plot)
直方图用于展示数据的分布情况,x轴是一个连续变量,y轴是该变量的频次. 下面利用Nathan Yau所著的<鲜活的数据:数据可视化指南>一书中的数据,学习画图. 数据地址:http://d ...
- Matplotlib学习---用matplotlib和sklearn画拟合线(line of best fit)
在机器学习中,经常要用scikit-learn里面的线性回归模型来对数据进行拟合,进而找到数据的规律,从而达到预测的目的.用图像展示数据及其拟合线可以非常直观地看出拟合线与数据的匹配程度,同时也可用于 ...
- Matplotlib学习---用matplotlib画箱线图(boxplot)
箱线图通过数据的四分位数来展示数据的分布情况.例如:数据的中心位置,数据间的离散程度,是否有异常值等. 把数据从小到大进行排列并等分成四份,第一分位数(Q1),第二分位数(Q2)和第三分位数(Q3)分 ...
- Matplotlib学习---matplotlib的一些基本用法
Matplotlib有两种接口,一种是matlab风格接口,一种是面向对象接口.在这里,统一使用面向对象接口.因为面向对象接口可以适应更复杂的场景,在多图之间进行切换将变得非常容易. 首先导入matp ...
- 很值得学习的java 画图板源码
很值得学习的java 画图板源码下载地址:http://download.csdn.net/source/2371150 package minidrawpad; import java.awt.*; ...
随机推荐
- MySQL分页时统计总记录行数并使用limit返回固定数目的记录
需求很简单:假设有一个user表,表中实际上有10000条数据,但是我不知道有多少条,我要从数据库中每次取20条数据显示,那么怎么完成呢? 方案一: 首先执行一个 select count(*) as ...
- 2019省赛训练组队赛3.31周四-17fj
https://vjudge.net/contest/289558#overview A - Frog Therearex frogs and y chicken in a garden. Kim f ...
- jdk下载及环境变量配置
一.下载 下载链接 二.环境变量:
- js实现input的赋值
input框赋值如下所示,是一个文本框的html代码,实际开发中,要涉及到将数据库中的数据取出然后放入input框中. <input id="name1" name=&quo ...
- QTP 自动货测试桌面程序-笔记 (单据-下拉框选择、对话框 、菜单)
1 录制下拉框使用键盘上下键 回车键选择记录行 Window("驷惠WIN系列[汽车4S连锁管理软件] 6.").Window("采购计划").WinObjec ...
- DEV GridControl/TreeList 中ShowingEditor使用
ShowingEditor事件对我来说就是控制单元格的编辑属性,在特定场景中(TreeList中要求子节点某些列可编辑,父节点不可编辑)就需要使用此事件来实现,与此同时,上一篇也介绍了特定场景单元格样 ...
- react 入坑笔记(三) - Props
React Props props - 参数. 组件类 React.Component 有个 defaultProps 属性,以 class xxx extend React.Component 形式 ...
- pixel和nexus设备安卓9.0/8.1/7.1.x/6.x WiFi和信号图标出现叉x号或者感叹号的消除办 法
在安卓9.0/8.1/8.0/7.1.2里如何消除x号(在老一点点版本是感叹号)呢? 1.首先开启usb调试,然后用数据线连接电脑和手机. 2.然后解决好您的adb驱动问题,具体教程见:http:// ...
- DatasourceUtils类:获取连接池和数据库连接
本工具类用于获取连接池和数据库连接 package com.itheima.utils; import java.sql.Connection; import java.sql.ResultSet; ...
- codeforces707C
Pythagorean Triples CodeForces - 707C 悉宇大大最近在学习三角形和勾股定理.很显然,你可以用三个边长为正数的线段去构造一个直角三角形,而这三个数被称作“勾股数”. ...