python 绘图库matplotlib-_机器学习需要掌握的绘图库:matplot,一个强大的基于python软件...

人工智能专栏推荐

正文

前面分享了matplotlib画图,而seaborn是在matplotlib基础之上进行画图的,它将matplotlib进行了封装,是的画图更加的简单。

第一步要安装这个库

1538793309484d8656d479c

1538793310260797767cd23

导入没有问题,就表示安装成功

%matplotlib inline是jupyter notebook里的命令, 意思是将那些用matplotlib绘制的图显示在页面里而不是弹出一个窗口,而且需要调用显示函数,就可以显示。

1538793310680d496f20933

画图

1538793311126c4b5693de2

np.linspace(0,14,100)的意思是从0到14中平均取出100个数,结果是一个列表

然后画折线图plot,x有100个点,所以np.sin(x...)也有100个,一一对应,构成一条折线图,然后for循环7次。所以形成折线图7条,效果为:

1538793311315b96308da3a

这个图像显示就是matlibplot的显示形式,现在还没有用到Seaborn,那么下面使用它,看看它的默认效果是什么?

1538793302883be796ae35e

使用sns.get()这个代码的意思是显示的风格是使用seaborn的默认效果形式,效果如下:

发现和matplotliib的显示效果差不多,没有什么区别

15387933030549ca2c32bbc

这是默认的风格,seaborn有五种风格

153879330320405045dd9ec

我要可以使用代码来选择我们要使用的风格:

sns.set_style("五种风格")

演示:

darkgrid的效果:

1538793303346aa729d9707

whitegrid效果:

1538793303490f5015268e4

dark效果:

15387933036270a7c533a04

white效果

1538793303812d3b84e8a19

ticks效果

1538793303921e5f82d3f83

上面这些风格可以应用在各种图上,上面只是应用在折现图上,除了风格设置之外还可以进行其它风格的设置。

其它风格设置细节

sns.despine()默认的效果是:

1538793303985f08f58a9b8

只有x轴和y轴,右边和上边的线去掉了

还可以为sns.despine()指定参数,sns.despine(offset=10)效果为:

15387933042649abc5d83df

offset=10的意思是指定图距离轴的位置

153879330441830be061ac4

left=true的意思是将left左边的轴去掉

子图设置:

子图一般的样式都是一样的,那么是否可以为子图设置不一样的样式呢?

153879330457251270c0d3e

首先plt.subplot(211)的意思就是subplots是设置子图的,这句话表示大图含有2行1列共2个子图,正在绘制的是第一个。

样式是darkgrid,关键点在于写在了with内,with执行完之后sns.ases_style("darkgrid")设置样式的效果就没有了,所以子图可以使用with设置,达到多样的效果。

其它的一些设置:

可以设置一些线和字的样式:

parper

1538793304671b141bb7f8d

talk

1538793304693d44493d80b

poster

15387933049142f5cc72dd9

netebook

1538793305105d24f6cf4b9

还可以指定font_scale表示字体的大小,rc={"lines...表示线的粗细

seaborn调色板

以前指定颜色,要是指定red,green,这些单词,或者(数字/255,数字/255,数字/255),这样的坏处是,第一没有这么多的颜色储备,第二有些颜色差别过大,使用调色版可以解决这个问题

153879330518123806e32cd

使用调色板:

1538793305237e2bd0cf3c1

效果为:

15387933053648e39eea963

6个默认的颜色循环主题: deep, muted, pastel, bright, dark, colorblind

从效果可以看出来seaborn的调色板默认有6个颜色,现在的问题是假如我们需要8个颜色或者更多的颜色,那么该如何解决?

这个时候就要使用颜色画板了,就是在一个圆形的颜色空间中画出均匀间隔的颜色(这样的色调会保持亮度和饱和度不变)。

15387933056164d2adb8600

有效果可以看出当前的额调色板上有8个颜色了,这个实现的原理是:

有一个常用的颜色空间hls,这个颜色空间什么颜色都有,然后从里面均匀取8份,这样的效果就是调色版上有8个颜色了。

有了画板之后,那么怎么使用这些颜色呢?

在画图的时候,通过参数palette来指定

1538793305759d611d0c164

在sns.boxplot画盒图的时候,使用data指定了要画的数据,数据应该是8个列表,同样palette也指定了调色板是8个颜色,二者一一对应画出盒图效果如上所示。

print np.random.normal(size=(20, 8))的结果为:

153879330591986a681120e

np.random.normal(size,loc,scale):

给出均值为loc,标准差为scale的高斯随机数(场).

1538793306014dc7bbb85f0

当颜色的亮度或者饱和度变化的时候,这个颜色也会发生变化。所以也可以通过hls_palette()函数来控制颜色的亮度和饱和,进而控制颜色

· l-亮度 lightness

· s-饱和 saturation

举例:

1538793306272cdae1cf5f7

第一个数字8表示调色板要8种颜色,其中l指定亮度,s指定饱和度,7和9前面有点

我们之所以有颜色的需求,是因为在画图的时候,颜色可以方便的我们进行数据的区分,比如有下面的一个需求,有四个团队,每个团队要派两个人参加个人站,那么这个颜色怎么设置比较好呢?

首先应该四个团队的颜色应该明显区别开,然后团队中的两个人的颜色应该相近,这样就是最好的颜色设置,要想实现这个可以使用(sns.color_palette("Paired",8),效果为:

15387933064001ef4b76fd5

这个可以成对的出现颜色,比如第一个是蓝和深蓝,第二个是绿和深绿,第三个是红和深红等等,这样对与对之间差别大,对内之间差别小。

使用xkcd颜色来命名颜色,xkcd包含了一套众包努力的针对随机RGB色的命名。产生了954个可以随时通过xdcd_rgb字典中调用的命名颜色。

要想使用这个xkcd的前提是需要知道他们的命名,简单举例

153879330661407cff773dd

画了三条线,使用sns_skcb_rgb的方式来指定了线的颜色

上面的画板中的颜色是离散的,就是不连续的,下面讲解连续的画板

15387933072835e633eb0b0

使用color_palette并指定颜色参数Blues(蓝),就可以可以看出它默认是从浅到深的样式显示

默认是从浅到深,要从深到浅可以:

如果想要翻转渐变,可以在面板名称中添加一个_r后缀

153879330758624dbf82a14

线性调色板:

线性调色板就是颜色就是线性的变化的,可以通过指定参数cubehelix_palette来实现,举例:

15387933076955a928fbf68

这个亮度和饱和度有一种线性的变幻,还可以通过指定颜色区间的这种方式来进行颜色的线性变化

1538793307734fbe3b94eea

light_palette() 和dark_palette()调用定制连续调色板

light_palette()从浅到深

dark_palette()从深到浅

153879330793424cd608df0

1538793308098809403a744

还可以反转:使用reverse参数

1538793308189aef0ba4de4

除了可以直接指定颜色的名称,还可以指定三原色:

1538793308604d38bcf28c6

单变量分析绘图

1538793308740954ea7aabb

首先鲜花一个图,画一个柱形图,np.random的意思是进行高斯数据

kde=false的意思是不计算核密度

15387933088127a0b5207e8

使用bin参数可以指定柱形图的数量,默认为10个

1538793309002a89a7e876a

数据分布情况

单特征使用直方图比较好来描述,那么多特征使用散点图比较好来描述

153879330910784965e868c

mean,cov是均值和协方差生成数据

然后使用np弄出200个数据

然后将data转成DataFrame格式

使用sns.jointplot可以很方便的画出散点图和直方图

如何要是输出df的数据,那么df的数据是输出这样的

153879330915494aacb7586

就是有两个特征值,一个x,一一对应,结合在一起构成散点图,当数据量比较大的时候可以使用hex风格的图像显示

153879330936393ea1644ac

画这个图的时候指定white颜色的,然后使用kind="hex"效果就是如图所示,颜色越深表示数据越集中

1538793309646456b768220

上面是有两个特征,一个x一个y,而这个是有四个特征,四个特征两个两个组合就可以形成16组组合,那么绘制的图像如图所示

代码

sns.set(color_codes=True)iris = sns.load_dataset("iris")sns.pairplot(iris)plt.show()

这里是加载了一个python自带数据集iris,然后使用pairplot进行绘制,效果就如上图所示,其中对角线上面特殊是只有一个特征值所以他们是柱状图而不是散状图

回归分析绘图

153879330983811d9512385

这里是使用了python自带的另外一个数据集tips,它输出的内容如上所示,数据有了之后,下面开始进行绘制

这里常用regplot进行绘制

153879331000981816b1293

使用regplot进行绘制,x轴为total_bill,y为tip,然后后面指定数据集,结果显示如右所示

可以看出这条线是最符合该数据集中total_bill,和tip规则的直线

1538793310009a637898670

可以看出这size和tip之间的数据关系是这样的,他们的数据都是3,4,5这样的不太连续的值,那么这样的值其实是不太适合做回归分析,当数据不太符合要求的时候,可以在原始数据值进行一个小范围的浮动

1538793310125b67f5bad68

这里是使用了参数x_jitter=.05让其所有数据任意左右移动.05的范围,这样数据回归分析更合适

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于Python 3D图以及Kmeans机器学习之3D Matplotlib图,我可以提供一些基本的信息,希望对你有所帮助。 Python中的Matplotlib库是一个数据可视化工具,可以制出各种类型的图表,包括2D和3D图表。在进行3D图时,需要引入Matplotlib库中的mplot3d子库。 K-means算法是一种聚类算法,可以将一组数据分为多个类别,每个类别中的数据具有相似的特征。K-means算法的核心思想是通过计算数据之间的距离,将数据划分到最近的簇中,并不断调整簇的中心点,直到达到最优的聚类效果。 在Python中,可以使用sklearn库中的KMeans类来实现K-means算法。在实现3D图时,可以使用Matplotlib库中的mplot3d子库中的Axes3D类来创建3D坐标轴,并使用scatter3D函数制散点图。 具体的代码实现可以参考以下示例: ```python import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from sklearn.cluster import KMeans # 生成随机数据 np.random.seed(5) data = np.random.normal(size=[100, 3]) # 使用K-means算法进行聚类 kmeans = KMeans(n_clusters=3).fit(data) labels = kmeans.labels_ # 制3D散点图 fig = plt.figure() ax = fig.add_subplot(111, projection='3d') ax.scatter3D(data[:, 0], data[:, 1], data[:, 2], c=labels) plt.show() ``` 这段代码可以生成100个随机数据,然后使用K-means算法将其分为3类,并制成3D散点图。你可以根据自己的需要修改数据和参数,实现不同类型的3D图表和K-means聚类效果的可视化展示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值