10.12 绘图matplotlib pandas seaborn

1. 3种绘图

pandas 和 seaborn 绘图都是基于 matplotlib的


image.png

变化趋势用线性图,对应关系用散点图,大小比较用条形图,数据分布用直方图,数据组成用饼图

1.1 知识点

LaTex语法 用π等表达式在图表上写上希腊字母。

2.Pandas绘图

快速使用一个Pandas对象出图


image.png

3.matplotlib

3.1基础知识

很多API有很多参数,先掌握主要的,后面慢慢都会。
(1)基本元素


image.png

(2)只含单一曲线的图
1.可以使用多个plot函数(推荐),在一个图中绘制多个曲线。
2.可以在一个plot函数中传入多个X,y值,在一个图中绘制多个曲线。


image.png

plt.plot(x,y) 绘制两组数据的对应关系。 plt.plot(y) 绘制一组数据,横轴0-n-1自动填充。
例:plt.plot(x)
image.png
image.png

例:plt(x,y) 把index作为x轴,x作为纵轴


image.png

image.png

3.2基础元素的设置

画板,画布,网格线,绘图上下文
坐标轴界限,坐标轴标签,刻度
画布标题,添加图例,保存图片

(1)画板

作用:画板是呈现画布,负责画布比例的1个背景,设不设置都存在
如何获取:


image.png

画板比例,比值越高,画布里所有元素越小。

(2)画布

作用:画布是画板的子视图,子视图会覆盖父视图
所以如果在子画布上再叠加一个子画布,两者的位置如果重叠的话,后叠加的子画布会覆盖。
如何获取:


image.png

(rows, cols, loc) 第几行,第几列,第几个子画布,位置从1开始。只是一种描述方式,并不是真的做切割。类似地球的经纬度,并没有切割和画那条线,只是位置描述。
获取画布,1.直接用plt.subplot 或者2.通过画板对象,add_subplot添加。

(3)网格线

image.png

image.png

(4)绘图上下文

使用plt时,会有绘图上下文。plt是面向过程式的写法,永远在操作最近的上一个对象。比如设置标题,操作之前的标题。


image.png

例:
得到画布:


image.png

绘图:


image.png

再plt绘制一图,plt画在axes2上去了。


image.png

如果把plt的位置换到前面,会画到axes上去,画第一张。plt只设置离它最近的一个画图。
image.png

画一张图


image.png
image.png

比如:手写数字里,绘制Image里的任意一张图


image.png

想展示其中的100张:
为什么能画到所有子画布上,因为绘图上下文的关系。


image.png

image.png

(5)坐标轴界限

image.png

例: 画线型图,给一组数据,高低很大,真实情况不是如此。是坐标轴刻度问题,无形之中放大了差距。
把y轴刻度范围设置了,会变化。发现数据波动并不是很大。


image.png
image.png

image.png

(6)坐标轴的比例和隐藏

equal 设定横纵比例1:1,原本默认是1.5:1

image.png

image.png

(7)坐标轴的标签

坐标轴标签.png
image.png

例:


image.png

fontdict:字体的属性字典,可以通过键值对的方式加字体的大小,fontsize,color等。

(8)坐标轴的刻度

plt.xticks可以直接设置刻度和标签,但axes要通过2步完成。


坐标轴刻度.png

image.png

可以查找LaTex语法

(9)画布标题

image.png

image.png

(10)添加图例

方法1. label设置后,用plt.legend()显示图例标签。


image.png

loc默认字符表示的位置
通过字符串best等,或者数字0-10来表示位置。


image.png

第2种:以坐标系上下左右定点的相对位置来处理,4个顶点的刻度设置好了,就是如下。可以用比值,设定图例的位置。
image.png

图例也可以是超过图的界限: loc=(-0.1,0.9)

ncol参数可以控制图例显示的列数。


image.png

(11)保存图片

用figure对象来操作,filename:图片的存储路径,相对路径和绝对路径。
dpi像素,越大图像越大。
facecolor 保存时的背景颜色。plt.figure() 里的facecolor图像保存时会失效。

image.png

保存图片的函数参数


image.png

3.3 2D图像的绘制

plt里的2D图像并没有那么好用,除了散点图,条形图,线形图其他一般用seaborn的方式解决。seaborn做的精致和快。

(1)绘制线性图

image.png

线性图表示趋势或者和时间有关,两组数据大小对比不能用。

(2)绘制直方图

image.png

orientation='vertical' 方向
align对齐方式
histtype hist的类型
label:图例
rwith: row的宽度


image.png

image.png
image.png

参数normed 如果值为True, 直方图的值将进行归一化处理,形成概率密度,默认值为False


image.png

如果指定了多个数据集合,颜色序列将会设置为相同的顺序,如果未指定,将会使用一个默认的线条颜色。


image.png

image.png

1.plt.hist(bins) bins--分组的个数,把数据从最小值到最大值进行n等分 (等差数列,比如=5,确定6个刻度,有5个区间进行划分,直方图表示落在每个区间的数据的个数)data.min() data.max()
2.分箱绘制
plt.hist() y = pd.cut(data, bins, labels)


image.png

分箱案例:


image.png

得到1.labels,相当于给数据打标签,对每个数据的标记,第一个数据是510-998区间的。2.得到2个类别,categories
image.png

设置标签为0,1,第一个区间返回是0,第二个为1
image.png

手动划分区间,保证区间覆盖整个data


image.png
image.png

返回的值,第一个是每个区间的数据的个数,即y轴显示的条形图的高,第2个array是整个数据切割的范围。

(3)绘制条形图

image.png

aligin 柱形的边的对齐方式,默认居中。只有center和edge2种方式


image.png

image.png

颜色为3元组,条形图往往用对比,可以设置不同颜色


image.png
image.png

image.png

例:


image.png

image.png

条形图,横轴可以不为数字,把文字作为标签


image.png
image.png

image.png

将标签值替换,被替换的目标索引要和原始索引匹配。不匹配上会失败。可以用np.arange(n)# 几个值就用几,那样2个图在1个图像中时,标签可以替换成功。


image.png

image.png

image.png

(4)极坐标条形图

要点:设立极坐标系,索引0-2π, 在极坐标系上绘制条形图。


image.png

(4)饼图

2种方式,1. 拿一组整数填,会按整数所占的比例去计算。
2.用小数填,如果小数和小于1,那么得到的饼图是缺角的。


image.png

image.png

(5)散点图

image.png

image.png

例:散点图:找到两组对应关系


image.png

例:引入第3维,成为气泡图


image.png

加上颜色,气泡呈现不同颜色


image.png

颜色用一个列表,相同的会呈现同一个颜色,比如,第2个和第5个颜色一样。


image.png

可以通过cmap参数配置0,1的颜色
cmap配置调色板,plt里提供了一些调色板,plt.cm.可以找到调色板

调色板作用,会维护一组颜色,如果设定c值,0,1,0是调色板中的索引,0对应的颜色是什么,就会渲染什么颜色。颜色都在调色板中处理的。所以更改调色板,颜色也会对应改变。


image.png

如果能记住调色板名称,可以直接用
image.png

(6)箱线图

箱线图的作用:主要是帮找离群点(异常值)的一种数据分布的图像。


image.png

例:


image.png

image.png

箱线图.png

最上和最下的横线是上边界和下边界,中间红色的线是中位数,整个箱子是数据的主要分布区间,中间长方形的上面横线是75%分位数,下面是25%分位数。整个箱子涵盖了50%的数据。上边界和下边界之外的数据就是离群点。所以可以把数据通过箱线图的绘制快速查看异常值的分布状况。是一种常见的查看数据质量的图像。箱线图用seaborn里绘制的比较多。

3.4 通用元素设置

image.png

线型中破折线,用dashes进行处理,接收偶数对的列表,
分别表示线长和间隙的长,交替处理。


image.png

image.png

image.png

设置破折号序列各段的宽度。


image.png

image.png

image.png

image.png

image.png

image.png

更多点的设置


image.png
image.png

多个曲线不同设置
多参数连用用 plt.plot(x1,y1,fmt1,x2,y2,fmt2...)

image.png

image.png

image.png

3.5 常用的颜色

image.png

image.png

十六进制颜色,# 开头表示16进制。


image.png

image.png

3.6 全局设置

plt.rcParams # 查看全局设置的参数


image.png

image.png
image.png

常用字体: 黑体 SimHei 仿宋 FangSong
楷体 KaiTi
可以做全局风格的设置。
一般用sns.set()更简单。


image.png

3.7 加载自定义字体(局部设置)

image.png

image.png

3.8 添加文字

(1)画板添加文字


image.png

(2)画布添加文字
1.mpl.axes.Axes.text() # 添加文本


image.png

2 mpl.axes.Axes.annotate() #添加注释


image.png
image.png

所有方法会返回一个matplotlib.text.Text对象

例:figure添加文本,x,y是一个相对位置,s是文本,
因为figure对象没有坐标刻度,x,y是一个0-1之间的相对位置。


image.png

例:annow
arowstyle 是 arrowprops里的一个键


image.png

image.png

例:
xy指向的那个位置,xytext 放文字的位置


image.png

4. seaborn

绘制复杂的二维图像

4.1 绘图风格的设定

(1)画布风格

image.png

(2)画布线条

image.png

(3)调色板

一、sns.set_palette()
1.特点


image.png

2.如何构造一个cmap对象


image.png

3.常用的调色板
image.png

4.默认的调色风格

deep, muted, bright, pastel, dark, colorblind
二、sns.color_palette()


image.png

4.2 常见图像绘制

(1)核心参数

image.png

(2)线图

image.png

(3)柱状图

image.png

(4)离散数据VS连续数据

箱线图,琴图,swarm图

image.png

(5)连续数据VS连续数据 散点图

sns.scatterplot()

(6)使用颜色深浅表现数据大小

image.png

(7)查看数据分布 :直方图,kde图像,地毯图

image.png

(8)网格布局

image.png

(9)成对图像

批量展示两两数据之间的对应关系
sns.pairplot(data=iris, hue=species)

4.2 seborn matplotlib绘图

5. 3D图像

image.png
image.png

例:


image.png

plt.colorbar(p,shrink=0.5)

你可能感兴趣的:(10.12 绘图matplotlib pandas seaborn)