python subplot 保持原始大小(python subplot参数)
人工智能专栏推荐
正文
前面分享了matplotlib画图,而seaborn是在matplotlib基础之上进行画图的,它将matplotlib进行了封装,是的画图更加的简单。
第一步要安装这个库
导入没有问题,就表示安装成功
%matplotlib inline是jupyter notebook里的命令, 意思是将那些用matplotlib绘制的图显示在页面里而不是弹出一个窗口,而且需要调用显示函数,就可以显示。
画图
np.linspace(0,14,100)的意思是从0到14中平均取出100个数,结果是一个列表
然后画折线图plot,x有100个点,所以np.sin(x…)也有100个,一一对应,构成一条折线图,然后for循环7次。所以形成折线图7条,效果为:
这个图像显示就是matlibplot的显示形式,现在还没有用到Seaborn,那么下面使用它,看看它的默认效果是什么?
使用sns.get()这个代码的意思是显示的风格是使用seaborn的默认效果形式,效果如下:
发现和matplotliib的显示效果差不多,没有什么区别
这是默认的风格,seaborn有五种风格
我要可以使用代码来选择我们要使用的风格:
sns.set_style(“五种风格”)
演示:
darkgrid的效果:
whitegrid效果:
dark效果:
white效果
ticks效果
上面这些风格可以应用在各种图上,上面只是应用在折现图上,除了风格设置之外还可以进行其它风格的设置。
其它风格设置细节
sns.despine()默认的效果是:
只有x轴和y轴,右边和上边的线去掉了
还可以为sns.despine()指定参数,sns.despine(offset=10)效果为:
offset=10的意思是指定图距离轴的位置
left=true的意思是将left左边的轴去掉
子图设置:
子图一般的样式都是一样的,那么是否可以为子图设置不一样的样式呢?
首先plt.subplot(211)的意思就是subplots是设置子图的,这句话表示大图含有2行1列共2个子图,正在绘制的是第一个。
样式是darkgrid,关键点在于写在了with内,with执行完之后sns.ases_style(“darkgrid”)设置样式的效果就没有了,所以子图可以使用with设置,达到多样的效果。
其它的一些设置:
可以设置一些线和字的样式:
parper
talk
poster
netebook
还可以指定font_scale表示字体的大小,rc={“lines…表示线的粗细
seaborn调色板
以前指定颜色,要是指定red,green,这些单词,或者(数字/255,数字/255,数字/255),这样的坏处是,第一没有这么多的颜色储备,第二有些颜色差别过大,使用调色版可以解决这个问题
使用调色板:
效果为:
6个默认的颜色循环主题: deep, muted, pastel, bright, dark, colorblind
从效果可以看出来seaborn的调色板默认有6个颜色,现在的问题是假如我们需要8个颜色或者更多的颜色,那么该如何解决?
这个时候就要使用颜色画板了,就是在一个圆形的颜色空间中画出均匀间隔的颜色(这样的色调会保持亮度和饱和度不变)。
有效果可以看出当前的额调色板上有8个颜色了,这个实现的原理是:
有一个常用的颜色空间hls,这个颜色空间什么颜色都有,然后从里面均匀取8份,这样的效果就是调色版上有8个颜色了。
有了画板之后,那么怎么使用这些颜色呢?
在画图的时候,通过参数palette来指定
在sns.boxplot画盒图的时候,使用data指定了要画的数据,数据应该是8个列表,同样palette也指定了调色板是8个颜色,二者一一对应画出盒图效果如上所示。
print np.random.normal(size=(20, 8))的结果为:
np.random.normal(size,loc,scale):
给出均值为loc,标准差为scale的高斯随机数(场).
当颜色的亮度或者饱和度变化的时候,这个颜色也会发生变化。所以也可以通过hls_palette()函数来控制颜色的亮度和饱和,进而控制颜色
· l-亮度 lightness
· s-饱和 saturation
举例:
第一个数字8表示调色板要8种颜色,其中l指定亮度,s指定饱和度,7和9前面有点
我们之所以有颜色的需求,是因为在画图的时候,颜色可以方便的我们进行数据的区分,比如有下面的一个需求,有四个团队,每个团队要派两个人参加个人站,那么这个颜色怎么设置比较好呢?
首先应该四个团队的颜色应该明显区别开,然后团队中的两个人的颜色应该相近,这样就是最好的颜色设置,要想实现这个可以使用(sns.color_palette(“Paired”,8),效果为:
这个可以成对的出现颜色,比如第一个是蓝和深蓝,第二个是绿和深绿,第三个是红和深红等等,这样对与对之间差别大,对内之间差别小。
使用xkcd颜色来命名颜色,xkcd包含了一套众包努力的针对随机RGB色的命名。产生了954个可以随时通过xdcd_rgb字典中调用的命名颜色。
要想使用这个xkcd的前提是需要知道他们的命名,简单举例
画了三条线,使用sns_skcb_rgb的方式来指定了线的颜色
上面的画板中的颜色是离散的,就是不连续的,下面讲解连续的画板
使用color_palette并指定颜色参数Blues(蓝),就可以可以看出它默认是从浅到深的样式显示
默认是从浅到深,要从深到浅可以:
如果想要翻转渐变,可以在面板名称中添加一个_r后缀
线性调色板:
线性调色板就是颜色就是线性的变化的,可以通过指定参数cubehelix_palette来实现,举例:
这个亮度和饱和度有一种线性的变幻,还可以通过指定颜色区间的这种方式来进行颜色的线性变化
light_palette() 和dark_palette()调用定制连续调色板
light_palette()从浅到深
dark_palette()从深到浅
还可以反转:使用reverse参数
除了可以直接指定颜色的名称,还可以指定三原色:
单变量分析绘图
首先鲜花一个图,画一个柱形图,np.random的意思是进行高斯数据
kde=false的意思是不计算核密度
使用bin参数可以指定柱形图的数量,默认为10个
数据分布情况
单特征使用直方图比较好来描述,那么多特征使用散点图比较好来描述
mean,cov是均值和协方差生成数据
然后使用np弄出200个数据
然后将data转成DataFrame格式
使用sns.jointplot可以很方便的画出散点图和直方图
如何要是输出df的数据,那么df的数据是输出这样的
就是有两个特征值,一个x,一一对应,结合在一起构成散点图,当数据量比较大的时候可以使用hex风格的图像显示
画这个图的时候指定white颜色的,然后使用kind=”hex”效果就是如图所示,颜色越深表示数据越集中
上面是有两个特征,一个x一个y,而这个是有四个特征,四个特征两个两个组合就可以形成16组组合,那么绘制的图像如图所示
代码
sns.set(color_codes=True)iris = sns.load_dataset(“iris”)sns.pairplot(iris)plt.show()
这里是加载了一个python自带数据集iris,然后使用pairplot进行绘制,效果就如上图所示,其中对角线上面特殊是只有一个特征值所以他们是柱状图而不是散状图
回归分析绘图
这里是使用了python自带的另外一个数据集tips,它输出的内容如上所示,数据有了之后,下面开始进行绘制
这里常用regplot进行绘制
使用regplot进行绘制,x轴为total_bill,y为tip,然后后面指定数据集,结果显示如右所示
可以看出这条线是最符合该数据集中total_bill,和tip规则的直线
可以看出这size和tip之间的数据关系是这样的,他们的数据都是3,4,5这样的不太连续的值,那么这样的值其实是不太适合做回归分析,当数据不太符合要求的时候,可以在原始数据值进行一个小范围的浮动
这里是使用了参数x_jitter=.05让其所有数据任意左右移动.05的范围,这样数据回归分析更合适
如发现本站有涉嫌抄袭侵权/违法违规等内容,请联系我们举报!一经查实,本站将立刻删除。