常见的图表有:饼状图,柱状图(可并列),折线图,散点图,直方图,叠加柱状图,三维散点图,三维曲面图,箱线图。

下面用seaborn库绘制以上各种类型的图表:

import seaborn as sns

import matplotlib.pyplot as plt

import pandas as pd

data = pd.read_csv(‘iris.csv‘)

dataname = data[‘species‘]

print(data.head())

print(‘------------------‘)

freq = dataname.value_counts(normalize = True) #也可以不归一化,在后面画图时候函数会自动归一化

print(freq)

print(‘------------------‘)

colors = [‘#81ecec‘,‘#ff7675‘,‘#6c5ce7‘]

plt.pie(freq, labels = freq.index, explode = (0.05, 0, 0), autopct = ‘%.1f%%‘, colors = colors, startangle = 90, counterclock = False)

plt.axis(‘square‘)

plt.legend(loc=‘upper right‘, bbox_to_anchor=(1.2, 0.2))

plt.show()

从图表可以看出来,每一类的数据分布是均匀的。

接下来我们看iris中每一个特征分布图,用柱状图表示。

如何生成随机数据供我们学习,numpy可以生成各种分布的数据,下面用kdeplot()来绘图,绘出数据的近似分布密度函数图,如下:

代码:

sns.set_style(‘ticks‘)

sns.set_context(‘paper‘)

x= np.random.uniform(0,1,10000) #均匀分布

y= np.random.normal(0,2,10000) # y ~ N(0,4) 正态分布 scale =标准差S

f=plt.figure()

f.add_subplot(1,2,1)

#plt.title(‘x‘)

sns.kdeplot(x)

f.add_subplot(1,2,2)

#plt.title(‘y‘)

sns.kdeplot(y)

plt.show()

有了上面的练习,再来画出iris数据各个特征的分布核函数:

sns.set_style(‘ticks‘)

sns.set_context(‘paper‘)

f= plt.figure(figsize=(8,6))

with sns.cubehelix_palette(8, gamma = 2): #gamma<1 unclear;gamma>1clear

f.add_subplot(2,2,1)

sns.kdeplot(data[‘sepal_length‘])

f.add_subplot(2,2,2)

sns.kdeplot(data[‘sepal_width‘])

f.add_subplot(2,2,3)

sns.kdeplot(data[‘petal_length‘])

f.add_subplot(2, 2, 4)

sns.kdeplot(data[‘petal_width‘])

plt.show()

我们再看不同类别的相同特征有什么样的分布规律。

sns.set_context(‘paper‘)

f = plt.figure(figsize=(8,6))

labels = dataname.drop_duplicates(inplace=False)

labels = labels.reset_index(drop = True)

featurename = data.columns

print(featurename)

for i in range(3):

cls = data[dataname == labels[i]]

cls.columns = labels[i]+‘_‘+featurename

for j in range(4):

f.add_subplot(2,2,j+1)

plt.title(featurename[j])

sns.kdeplot(cls[labels[i]+‘_‘+featurename[j]])

plt.suptitle("kernel density estimations of the features of different irises")#中文显示问题我还没有解决,之后会出一随笔写有关plt中文显示的问题

plt.show()

可以看出在petal_length和petal_width这两个特征的密度分布函数图中 setosa 和另外两种iris区分很开,所以依据petal_length或者petal_width就足够区分出是否为setosa了;

而另外两种iris 4个特征的密度分布函数均有重叠,需要后序做进一步区分。

前面单单从一个维度(petal_lenght或者petal_width)足够区分出一种花setosa, 对于另外两种花我们期待能在高的维度上区分它们,所以

我们可以作出更高维度的图看能否直观的区分出它们。

from scipy.stats import pearsonr,norm

sns.set_context(‘paper‘)

data1 = data[data[‘species‘]==‘versicolor‘]

data2 = data[data[‘species‘]==‘virginica‘]

sns.jointplot(x = ‘sepal_length‘, y = ‘sepal_width‘, data = data1,

marginal_kws=dict(bins = 20, kde = True, fit = norm, fit_kws = {‘color‘: ‘r‘},

rug = True),stat_func = pearsonr, linewidth = 1, space = 0, color = ‘b‘).set_axis_labels(‘versicolor_sepal_length‘,‘versicolor_sepal_width‘)

plt.suptitle(‘versicolor\‘s sepal feature‘)

ax = sns.jointplot(data2[‘sepal_length‘],data2[‘sepal_width‘],marginal_kws=dict(bins = 20, kde = True, fit = norm, fit_kws = {‘color‘: ‘r‘},

rug = True),stat_func = pearsonr, space = 0, color = ‘g‘,kind = ‘scatter‘) #kind = ‘scatter‘, ‘reg‘, ‘resid‘, ‘kde‘, ‘hex‘

ax.plot_joint(sns.kdeplot, zorder = 0, n_levels = 6)#在前面一个图的基础上在加上核密度估计的联合密度分布图,通过plot_joint()实现。

plt.suptitle(‘virginica\‘s sepal feature‘)

plt.show()

从这两个图我们可以看出sepal_length和sepal_width有正相关关系,由于仅仅由一个sepal_length或者sepal_width,我们是无法区别这两种花的,看了两种花的sepal_length or width 分布后我们可以知道仅仅由这两个数据我们依然无法区分sepal width, 左边图的中心在(6,2.5)左右,右边图的中心在(6.8,3)左右,两中心距离较近,且可以看出feature向量分布很散。

现在需要将两个图合并为一个图,这样我们可以更清楚的判断能否仅仅通过sepal数据来区分这两种iris。

我们需要用到pairplot()函数:

‘‘‘

seaborn.pairplot(data,hue = None,hue_order = None,palette = None,vars = None,x_vars = None,y_vars = None,kind =‘scatter’,

diag_kind =‘auto’,markers = None,s = 2.5,aspect = 1,dropna = True,plot_kws = None,diag_kws = None,grid_kws = None)

‘‘‘

sns.set_context(‘paper‘)

new_data = data[data[‘species‘]!=‘setosa‘]

print(new_data.head())

new_data.reset_index(drop = True, inplace = True)

print(new_data.head())

ax = sns.pairplot(new_data,

kind = ‘scatter‘, # 散点图/回归分布图 {‘scatter’, ‘reg’}

diag_kind="hist", # 设置对角线图直方图/密度图 {‘hist’, ‘kde’}

hue="species", # 按照某一字段进行分类

aspect = 1, #图形比例1:1

palette="husl", # 设置调色板

markers=[‘o‘,‘x‘], # 设置不同系列的点样式(这里根据参考分类个数)‘D‘,‘o‘,‘x‘,‘+‘...

size = 2, # 图表大小

plot_kws={‘size‘:2.5}, # 设置点大小

diag_kws={‘edgecolor‘:‘w‘}) # 设置对角线直方图样式

plt.show()

可以看出当数据投影到二维平面上时候我们可以近似用一条直线将两种iris花给区分开,

由(1,4),(2,4),(3,4)我们可以清晰的看见可以画出一条分界线区分两种花,

这说明了petal_width是区分这两种花的关键。

sns.set_style(‘white‘,{‘font.sans-serif‘:[‘simhei‘,‘Arial‘]})

sns.set_context(‘paper‘)

new_data = data[data[‘species‘]!=‘setosa‘]

print(new_data.head())

new_data.reset_index(drop = True, inplace = True)

print(new_data.head())

sns.pairplot(new_data, kind = ‘reg‘, hue = ‘species‘, markers = [‘o‘,‘x‘],

diag_kind=‘kde‘,palette =‘husl‘, diag_kws=dict(shade = True, color = ‘g‘), height = 2)

plt.suptitle(‘对每一类两个变量进行回归分析图表‘)

plt.show()

前面添加一句话 sns.set_style(‘white‘,{‘font.sans-serif‘:[‘simhei‘,‘Arial‘]})就可以显示中文啦!

从图表可以看出来不同种类的iris花各个特征之间的影响程度不同,petal_length对petal_width,不同种类影响也不同,

例如versicolor的petal_length对pental_width影响很大。

明天继续更新seaborn库对后面的图表绘画的方法。

原文:https://www.cnblogs.com/raiuny/p/13172340.html

如何更新seaborn库_Python 绘图总结(seaborn库的使用) (上)相关推荐

  1. python如何设置画布开始位置_Python绘图篇——Turtle库详解(一)

    交流学习python编程技术及行业动态,点击上方"蓝字"关注我们 Python绘图篇--Turtle库详解(一) 写在前面 ↓ 注:本教程基于64位windows系统(鼠标右键点击 ...

  2. python打包库_Python 打包自己的库到 PYPI (可pip安装)

    背景 在我们安装 Python 库的时候,通常我们都是pip install xxx 真是又酷炫又方便 那么,当我们自己写了一些自认为不错的库,想要分享给大家使用(或者是想要装X时)能不能也能做到这样 ...

  3. python自然语言处理库_Python自然语言处理工具库(含中文处理)

    自然语言处理(Natural Language Processing,简称 NLP),是研究计算机处理人类语言的一门技术.随着深度学习在图像识别.语音识别领域的大放异彩,人们对深度学习在 NLP 的价 ...

  4. python都需要安装哪些库_python常用到哪些库?

    Python作为一个设计优秀的程序语言,现在已广泛应用于各种领域,依靠其强大的第三方类库,Python在各个领域都能发挥巨大的作用. 下面我们就来看一下python中常用到的库: 数值计算库: 1. ...

  5. python数据分析用什么库_Python数据分析常用的库总结

    Python之所以能够成为数据分析与挖掘领域的最佳语言,是有其独特的优势的.因为他有很多这个领域相关的库可以用,而且很好用,比如Numpy.SciPy.Matploglib.Pandas.Scikit ...

  6. pythonturtle是标准库_Python import载入turtle库详解

    这次更新离上一章隔的有点远,主要原因是在第三讲这里,即涉及到turtle的部分,我需要进行一些课外的自学工作,包括了解整个The Python Standard Library,以及turtle gr ...

  7. pandas是基于什么的python库_Python的五大常用库——numpy,pandas,matplotlib等

    Numpy Numpy 是python科学计算的基础包,本书大部分内容都基于numpy以及构建于其上的库.其功能有:快速高效的多维数组对象ndarray 用于对数组执行元素级计算以及直接对数组执行数字 ...

  8. python如何扩展库_python的常用扩展库以及使用方式

    一.常用库(标准库+扩展库) 标准库 说明 math 数学模块 random 随机数以及随机化相关模块 datetime 日期时间模块 ​collections 包含更多扩展性序列的模块 functo ...

  9. python解析库_Python命令行解析库argparse

    原博文 2014-08-13 05:48 − 2.7之后python不再对optparse模块进行扩展,python标准库推荐使用argparse模块对命令行进行解析. 1.example 有一道面试 ...

最新文章

  1. Lambda演算学习笔记
  2. 监控服务器登录用户的操作脚本(linux下shell.sh)
  3. Spring Boot——一种包含分页和排序参数的接收方法DEMO
  4. 修复 XE7 , XE8 Frame 内 PopupMenu 快捷键失效问题
  5. ps中如何同图层获取css代码
  6. Web前端笔记(6)
  7. delphi 字符串占用空间_字符串在Python内部是如何省内存的
  8. 面试:Spring Boot的优缺点
  9. 电脑PC端如何下载B站视频?
  10. cosmo是什么牌子_时尚COSMO - 时尚品牌 - 时尚
  11. FPGA内部资源结构——以Altera CycloneⅣ 为例
  12. css中 =是什么意思,CSS中link什么意思
  13. 回溯法采用的搜索策略_下面哪种函数是回溯法中为避免无效搜索采取的策略( )...
  14. Vue2源码解析 虚拟dom简介
  15. uhs3内存卡有哪些_存储卡的读写速度的区别:class 10,UHS-1(U1 U3),UHS-3
  16. Web系统大规模并发——电商秒杀与抢购
  17. 什么是大数据,大数据的处理流程介绍
  18. 【UI 设计】PhotoShop基础工具 -- 移动工具
  19. 传统与深度学习遥感变化监测遥感技术路线与方法
  20. sql注入绕过姿势--骚姿势大全

热门文章

  1. 利用浏览器开发者工具下载歌曲
  2. Google Pay接入
  3. 事务码ABAVN-资产卡片报废-BAPI_ASSET_RETIREMENT_POST
  4. 获得除当前元素外的所有其他元素,并对其他元素进行设置
  5. 在服务器上设置虚拟传入,如何配置 SMTP 虚拟服务器以进行邮件传递
  6. WEB前端性能优化,提高页面加载速度
  7. 服装销售管理系统设计java_java毕业设计_springboot框架的四季屋服装销售管理系统...
  8. 基于Hadoop豆瓣电影数据分析(综合实验)
  9. android开发 修改标题栏背景_android开发修改状态栏背景色和图标颜色
  10. ESXi-6.7.0U3b nvme固态硬盘无法识别解决方法