画一个吸引人注意的图表相当重要。当你探索一个数据集,需要画图表,图表看起来令人愉悦是件很高兴的事。在与你的观众交流观点时,可视化同样重要,同时,也很有必要去让图表吸引注意力和印入脑海里。Matplotlib自动化程度非常高,但是,掌握如何设置系统以便获得一个吸引人的图是相当困难的事。为了控制matplotlib图表的外观,Seaborn模块自带许多定制的主题和高级的接口。

我们用ipython notebook

import numpy as np

import matplotlib as mpl

import matplotlib.pyplot as plt

np.random.seed(sum(map(ord,"aesthetics")))

让我们定以一个函数来画正弦函数,这将帮助我们了解我们可以控制的不同风格的参数。

def sinplot(flip=1):

x =np.linspace(0,14,100)

for i in range(1,7):

plt.plot(x,np.sin(x+i*0.5)*(7-i)*flip)

import seaborn as sns

sinplot()

2 图形分类

因变量绘图

1 线箱图boxplot

2 小提琴图violinplot

3 散点图striplot

4 带分布的散点图swarmplot

5 直方图barplot

6 计数直方图countplot

7 两变量关系图factorplot

回归图

回归图只要探讨两连续数值变量的变化趋势情况,绘制x-y的散点图和回归曲线。

1 线性回归图implot

2 线性回归图regplot

分布图

包括单变量核密度曲线,直方图,双变量多变量的联合直方图,和密度图

热力图

1 热力图heatmap

聚类图

1 聚类图clustermap

时间序列图

1 时间序列图tsplot

2我的时间序列图plot_ts_d,plot_ts_m

3 因子变量绘图

3.1 boxplot线箱图

import seaborn as sns

sns.set_style("whitegrid")

tips = sns.load_dataset("tips")

# 绘制箱线图

ax = sns.boxplot(x=tips["total_bill"])

# 竖着放的箱线图,也就是将x换成y

ax = sns.boxplot(y=tips["total_bill"])

# 分组绘制箱线图,分组因子是day,在x轴不同位置绘制

ax = sns.boxplot(x="day", y="total_bill", data=tips)

#分组箱线图,分子因子是smoker,不同的因子用颜色区分

#相当于分组之后又分组

ax =sns.boxplot(x="day",y="total_bill",hue="smoker",data=tips, palette="Set3")

# 改变线宽,linewidth参数

ax = sns.boxplot(x="day", y="total_bill",hue="time",data=tips, linewidth=2.5)

#改变x轴顺序,order参数

ax = sns.boxplot(x="time", y="tip", data=tips,order=["Dinner", "Lunch"])

# 对dataframe的每个变量都绘制一个箱线图,水平放置

iris = sns.load_dataset("iris")

ax = sns.boxplot(data=iris, orient="h", palette="Set2"

# 箱线图+有分布趋势的散点图

# 图形组合也就是两条绘图语句一起运行就可以了,相当于图形覆盖了

ax = sns.boxplot(x="day", y="total_bill", data=tips)

ax = sns.swarmplot(x="day", y="total_bill", data=tips, color=".25")

https://img-blog.csdn.net/20170403205820929?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc3V6eXUxMjM0NQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

3.3 stripplot散点图

需要注意的是,seaborn中有两个散点图,一个是普通的散点图,另一个是可以看出分布密度的散点图。下面把它们花在一起就明白了。

# 普通的散点图

ax1 = sns.stripplot(x=tips["total_bill"])

# 带分布密度的散点图

ax2 = sns.swarmplot(x=tips["total_bill"])

# 分组的散点图

ax = sns.stripplot(x="day", y="total_bill", data=tips)

# 添加抖动项的散点图,jitter可以是0.1,0.2...这样的小数,表示抖动的程度大小

ax = sns.stripplot(x="day", y="total_bill", data=tips, jitter=True)

# 重点来了,分组绘制,而且是分组后分开绘制,在柱状图中,跟分组柱状图类似的。

# 通过 hue, split 参数控制

# 1.分组

ax = sns.stripplot(x="sex",y="total_bill",hue="day",data=tips, jitter=True)

# 2.分开绘制

ax = sns.stripplot(x="day", y="total_bill", hue="smoker",data=tips, jitter=True,palette="Set2",split=True)

# 散点图+小提起图

# 两条命令一起运行就行了

ax=sns.violinplot(x="day",y="total_bill",data=tips,inner=None, color=".8")

ax=sns.stripplot(x="day",y="total_bill",data=tips,jitter=True)

3.4 swarmplot带分布的散点图

swarmplt的参数和用法和stripplot的用法是一样的,只是表现形式不一样而已。

import seaborn as sns

sns.set_style("whitegrid")

tips = sns.load_dataset("tips")

ax = sns.swarmplot(x=tips["total_bill"])

ax= sns.swarmplot(x="day",y ="total_bill",data = tips)

3.6 直方图

直方图的统计函数,绘制的是变量的均值 estimator=np.mean

# 注意看看Y轴,看到没,统计函数默认是 mean,

import seaborn as sns

sns.set_style("whitegrid")

tips = sns.load_dataset("tips")

ax = sns.barplot(x="day", y="total_bill", data=tips,ci=0)

# 分组的柱状图

ax = sns.barplot(x="day", y="total_bill", hue="sex", data=tips,ci=0)

# 绘制变量中位数的直方图,estimator指定统计函数

from numpy import median

ax = sns.barplot(x="day", y="tip", data=tips,estimator=median, ci=0)

3.7 countplot计数统计图

这个很重要,对因子变量计数,然后绘制条形图

import seaborn as sns

sns.set(style="darkgrid")

titanic = sns.load_dataset("titanic")

ax = sns.countplot(x="class", data=titanic)

# 分组绘图

ax = sns.countplot(x="class", hue="who", data=titanic)

# 如果是横着放,x用y替代

ax = sns.countplot(y="class", hue="who", data=titanic)

3.8.factorplot

这是一类重要的变量联合绘图。

绘制 因子变量-数值变量 的分布情况图。

# 用小提琴图 反应 time-pulse 两变量的分布情形

import seaborn as sns

sns.set(style="ticks")

exercise = sns.load_dataset("exercise")

g =sns.factorplot(x="time",y="pulse",hue="kind",data=exercise, kind="violin")

# 不同的deck(因子)绘制不同的alive(数值),col为分子图绘制,col_wrap每行画4个子图

titanic = sns.load_dataset("titanic")

g = sns.factorplot(x="alive", col="deck", col_wrap=4,data=titanic[titanic.deck.notnull()],kind="count", size=2.5, aspect=.8)

![这里写图片描述](https://img-blog.csdn.net/20170403222401446?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc3V6eXUxMjM0NQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)

4.回归图

回归图有两个,我暂时没有看出他们有什么区别,从函数说明来看看吧。

lmplot: Plot data and regression model fits across a FacetGrid.

regplot:Plot data and a linear regression model fit.

4.1.回归图lmplot

# 线性回归图

import seaborn as sns; sns.set(color_codes=True)

tips = sns.load_dataset("tips")

g = sns.lmplot(x="total_bill", y="tip", data=tips)

# 分组的线性回归图,通过hue参数控制

g = sns.lmplot(x="total_bill", y="tip", hue="smoker", data=tips)

# 分组绘图,不同的组用不同的形状标记

g = sns.lmplot(x="total_bill", y="tip", hue="smoker", data=tips,markers=["o", "x"])

# 不仅分组,还分开不同的子图绘制,用col参数控制

g = sns.lmplot(x="total_bill", y="tip", col="smoker", data=tips)

# col+hue 双分组参数,既分组,又分子图绘制,jitter控制散点抖动程度

g = sns.lmplot(x="size", y="total_bill", hue="day", col="day",data=tips, aspect=.4, x_jitter=.1)

# 分组绘制,控制size尺寸

g = sns.lmplot(x="total_bill", y="tip", col="day", hue="day",data=tips, col_wrap=2, size=3)

# 既然col可以控制分组子图的,那么row也是可以控制分组子图的

g = sns.lmplot(x="total_bill", y="tip", row="sex", col="time", data=tips, size=3)

4.2.回归图regplot

import seaborn as sns; sns.set(color_codes=True)

tips = sns.load_dataset("tips")

ax = sns.regplot(x="total_bill", y="tip", data=tips)

# 控制散点的形状和颜色

import numpy as np; np.random.seed(8)

mean, cov = [4, 6], [(1.5, .7), (.7, 1)]

x, y = np.random.multivariate_normal(mean, cov, 80).T

ax = sns.regplot(x=x, y=y, color="g", marker="+")

# 控制回归的置信度,你会看到拟合直线的外面的面积的有变化的

ax = sns.regplot(x=x, y=y, ci=68)

# 上面的都是拟合一次曲线,拟合二次曲线通过order=2设置,

# 拟合一次曲线相当于 order=1

ans = sns.load_dataset("anscombe")

ax = sns.regplot(x="x", y="y", data=ans.loc[ans.dataset == "II"],scatter_kws={"s": 80},order=2, ci=None, truncate=True)

5.数值分布绘图

5.1.直方图histplot

# 绘制数值变量的密度分布图

# 默认既绘制核密度曲线,也绘制直方图

import seaborn as sns, numpy as np

sns.set(rc={"figure.figsize": (8, 4)}); np.random.seed(0)

x = np.random.randn(100)

ax = sns.distplot(x)

# 只绘制核密度曲线,不绘制直返图

ax = sns.distplot(x, rug=True, hist=False)

# 横着放

ax = sns.distplot(x, vertical=True)

5.2.核密度图kdeplot

# 绘制核密度图

import numpy as np; np.random.seed(10)

import seaborn as sns; sns.set(color_codes=True)

mean, cov = [0, 2], [(1, .5), (.5, 1)]

x, y = np.random.multivariate_normal(mean, cov, size=50).T

ax = sns.kdeplot(x)

# shade参数决定是否填充曲线下面积

ax = sns.kdeplot(x, shade=True, color="r")

# 双变量密度图,相当于等高线图了

# shade 参数改用颜色深浅表示密度的大小,不过不用,就真的是等高线了

ax = sns.kdeplot(x, y, shade=True)

# 分组绘制双变量的核密度图

# 相当于绘制两个核密度图,通过图可以看到密度中心

# 类似于挖掘算法中聚类中心绘图

iris = sns.load_dataset("iris")

setosa = iris.loc[iris.species == "setosa"] # 组1

virginica = iris.loc[iris.species == "virginica"] # 组2

ax = sns.kdeplot(setosa.sepal_width, setosa.sepal_length, cmap="Reds", shade=True, shade_lowest=False)

ax = sns.kdeplot(virginica.sepal_width, virginica.sepal_length, cmap="Blues", shade=True, shade_lowest=False)

python图表制作方法_python图表制作相关推荐

  1. 串口连接线的制作方法 com线制作

    串口连接线的制作 方法  com线制作 在电脑的使用中往往会遇到各种各样的连接线.这些连接线外观上好像都差不多,但内部结构完全不同并且不能混用.如果在使用中这些连接线坏了,往往很多使用者都不知道应该怎 ...

  2. python图表制作方法_Python中一种简单的动态图表制作方法

    在读技术博客的过程中,我们会发现那些能够把知识.成果讲透的博主很多都会做动态图表.他们的图是怎么做的?难度大吗?这篇文章就介绍了Python中一种简单的动态图表制作方法. 数据暴增的年代,数据科学家. ...

  3. python 财务分析可视化方法_Python数据可视化的四种简易方法

    Python数据可视化的四种简易方法 作者:PHPYuan 时间:2018-11-28 03:40:43 摘要: 本文讲述了热图.二维密度图.蜘蛛图.树形图这四种Python数据可视化方法. 数据可视 ...

  4. python contains魔法方法_python魔法方法

    Python 魔术方法指南 入门 构造和初始化 构造定制类用于比较的魔术方法 用于数值处理的魔术方法 表现你的类 控制属性访问 创建定制序列 反射 可以调用的对象 会话管理器 创建描述器对象 持久化对 ...

  5. eps罗马柱头制作方法_eps构件制作方法

    不管是气势如虹.恢宏大气的檐线.罗马柱,还是朴实无华.造型经典的花饰浮雕.其实都是eps构件的功劳,eps构件不仅能做装饰,给予人们良好的视觉感受,更能形成一种高端美丽的景观.由于eps构件拥有广阔的 ...

  6. html电梯怎么设计,迷你世界电梯是制作方法 电梯怎么制作_迷你世界

    迷你世界虽然有很多玩家在玩,但是依然有玩家并不清楚电梯是怎么去做的,下面我们来看一看制作电梯的方法. 制作电梯一定要准备材料,也就是通过电能产生器,机械臂,还有滑动方块移触碰按钮等等,这些材料一定要准 ...

  7. 服务器刷怪塔制作方法,迷你世界制作刷怪塔须知 制作刷怪塔需要注意些什么...

    迷你世界刷怪塔是游戏中一个非常重要的建筑,有了它你不但可以快速获得经验还能省去很多收集材料的时间.关于刷怪塔的制作方法,之前也出过一些攻略,但是刷怪塔的制作方法也是千奇百怪,并不能一概而论.所以本文将 ...

  8. python的open方法_Python os.open() 方法

    Python os.open() 方法 概述 os.open() 方法用于打开一个文件,并且设置需要的打开选项,模式参数mode参数是可选的,默认为 0777. 语法 open()方法语法格式如下: ...

  9. python __reduce__魔法方法_Python魔法方法指南

    (译)Python魔法方法指南 简介 本指南归纳于我的几个月的博客,主题是 魔法方法 . 什么是魔法方法呢?它们在面向对象的Python的处处皆是.它们是一些可以让你对类添加"魔法" ...

  10. python字符串反转方法_Python程序使用堆栈和反转方法反转字符串

    python字符串反转方法 Given a string and we have to reverse it by using stack and by using reversed method i ...

最新文章

  1. Ubuntu Server 12.04下cobbler + dnsmasq +tftpd-hpa的安装配置(四)
  2. 【java 性能优化实战】3 工具实践:如何获取代码性能数据?
  3. 【大型网站技术实践】初级篇:借助LVS+Keepalived实现负载均衡
  4. Django开发环境准备
  5. 从源码分析DEARGUI之draw的一系列操作
  6. FocalLoss的Caffe复现版
  7. 关于Struts2的通配方法、转发重定向
  8. 深入java并发包源码(三)AQS独占方法源码分析
  9. iOS学习笔记之typedef
  10. android p 第三方预装,android P 隐藏API对系统APP的影响
  11. 实战申请Let's Encrypt永久免费SSL证书过程教程及常见问题
  12. 【linux】ubuntu更改mysql数据文件路径
  13. [HCNA] 静态路由配置实例
  14. 嵌入式软件开发必备知识体系
  15. Tortoise ORM 简单使用
  16. 图片云存储服务商在阿里云和又拍云之间如何选择?
  17. SSH-keygen用法
  18. 人像抠图软件哪个好?这些软件助你实现人像抠图
  19. 你连HTTPS 原理都不懂,还给我讲“中间人攻击”
  20. 调研-python使用win32com模块操纵excel

热门文章

  1. 开源软件,自由软件,免费软件三者的区别
  2. 为何使用百度输入法老是出现错别字?
  3. Protel 99 SE库文件添加时“file is not recognized”
  4. vue.js入门以及和echarts整合之柱状图和中国地图
  5. 心形灯c语言程序,用C语言实现心形表白程序[酷炫动态版]
  6. redis 默认过期策略_redis 过期策略
  7. 有效查看笔记本的cpu类型、内存品牌、硬盘颗粒类型
  8. Win11截图键无法使用怎么办?Win11截图键无法使用的解决方法
  9. 华为平板解锁工具_华为平板M6 10.8英寸首发评测 办公+影音+智能全面开花
  10. c语言php环境搭建,c语言从入门到放弃 php从入门到放弃系列-01php环境的搭建