python图表制作方法_python图表制作
画一个吸引人注意的图表相当重要。当你探索一个数据集,需要画图表,图表看起来令人愉悦是件很高兴的事。在与你的观众交流观点时,可视化同样重要,同时,也很有必要去让图表吸引注意力和印入脑海里。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图表制作相关推荐
- 串口连接线的制作方法 com线制作
串口连接线的制作 方法 com线制作 在电脑的使用中往往会遇到各种各样的连接线.这些连接线外观上好像都差不多,但内部结构完全不同并且不能混用.如果在使用中这些连接线坏了,往往很多使用者都不知道应该怎 ...
- python图表制作方法_Python中一种简单的动态图表制作方法
在读技术博客的过程中,我们会发现那些能够把知识.成果讲透的博主很多都会做动态图表.他们的图是怎么做的?难度大吗?这篇文章就介绍了Python中一种简单的动态图表制作方法. 数据暴增的年代,数据科学家. ...
- python 财务分析可视化方法_Python数据可视化的四种简易方法
Python数据可视化的四种简易方法 作者:PHPYuan 时间:2018-11-28 03:40:43 摘要: 本文讲述了热图.二维密度图.蜘蛛图.树形图这四种Python数据可视化方法. 数据可视 ...
- python contains魔法方法_python魔法方法
Python 魔术方法指南 入门 构造和初始化 构造定制类用于比较的魔术方法 用于数值处理的魔术方法 表现你的类 控制属性访问 创建定制序列 反射 可以调用的对象 会话管理器 创建描述器对象 持久化对 ...
- eps罗马柱头制作方法_eps构件制作方法
不管是气势如虹.恢宏大气的檐线.罗马柱,还是朴实无华.造型经典的花饰浮雕.其实都是eps构件的功劳,eps构件不仅能做装饰,给予人们良好的视觉感受,更能形成一种高端美丽的景观.由于eps构件拥有广阔的 ...
- html电梯怎么设计,迷你世界电梯是制作方法 电梯怎么制作_迷你世界
迷你世界虽然有很多玩家在玩,但是依然有玩家并不清楚电梯是怎么去做的,下面我们来看一看制作电梯的方法. 制作电梯一定要准备材料,也就是通过电能产生器,机械臂,还有滑动方块移触碰按钮等等,这些材料一定要准 ...
- 服务器刷怪塔制作方法,迷你世界制作刷怪塔须知 制作刷怪塔需要注意些什么...
迷你世界刷怪塔是游戏中一个非常重要的建筑,有了它你不但可以快速获得经验还能省去很多收集材料的时间.关于刷怪塔的制作方法,之前也出过一些攻略,但是刷怪塔的制作方法也是千奇百怪,并不能一概而论.所以本文将 ...
- python的open方法_Python os.open() 方法
Python os.open() 方法 概述 os.open() 方法用于打开一个文件,并且设置需要的打开选项,模式参数mode参数是可选的,默认为 0777. 语法 open()方法语法格式如下: ...
- python __reduce__魔法方法_Python魔法方法指南
(译)Python魔法方法指南 简介 本指南归纳于我的几个月的博客,主题是 魔法方法 . 什么是魔法方法呢?它们在面向对象的Python的处处皆是.它们是一些可以让你对类添加"魔法" ...
- python字符串反转方法_Python程序使用堆栈和反转方法反转字符串
python字符串反转方法 Given a string and we have to reverse it by using stack and by using reversed method i ...
最新文章
- Ubuntu Server 12.04下cobbler + dnsmasq +tftpd-hpa的安装配置(四)
- 【java 性能优化实战】3 工具实践:如何获取代码性能数据?
- 【大型网站技术实践】初级篇:借助LVS+Keepalived实现负载均衡
- Django开发环境准备
- 从源码分析DEARGUI之draw的一系列操作
- FocalLoss的Caffe复现版
- 关于Struts2的通配方法、转发重定向
- 深入java并发包源码(三)AQS独占方法源码分析
- iOS学习笔记之typedef
- android p 第三方预装,android P 隐藏API对系统APP的影响
- 实战申请Let's Encrypt永久免费SSL证书过程教程及常见问题
- 【linux】ubuntu更改mysql数据文件路径
- [HCNA] 静态路由配置实例
- 嵌入式软件开发必备知识体系
- Tortoise ORM 简单使用
- 图片云存储服务商在阿里云和又拍云之间如何选择?
- SSH-keygen用法
- 人像抠图软件哪个好?这些软件助你实现人像抠图
- 你连HTTPS 原理都不懂,还给我讲“中间人攻击”
- 调研-python使用win32com模块操纵excel
热门文章
- 开源软件,自由软件,免费软件三者的区别
- 为何使用百度输入法老是出现错别字?
- Protel 99 SE库文件添加时“file is not recognized”
- vue.js入门以及和echarts整合之柱状图和中国地图
- 心形灯c语言程序,用C语言实现心形表白程序[酷炫动态版]
- redis 默认过期策略_redis 过期策略
- 有效查看笔记本的cpu类型、内存品牌、硬盘颗粒类型
- Win11截图键无法使用怎么办?Win11截图键无法使用的解决方法
- 华为平板解锁工具_华为平板M6 10.8英寸首发评测 办公+影音+智能全面开花
- c语言php环境搭建,c语言从入门到放弃 php从入门到放弃系列-01php环境的搭建