Matplotlib 基础知识

一、
Matplotlib 中的基本图表包括的元素

x 轴和 y 轴 axis
水平和垂直的轴线
x 轴和 y 轴刻度 tick
刻度标示坐标轴的分隔,包括最小刻度和最大刻度
x 轴和 y 轴刻度标签 tick label
表示特定坐标轴的值
绘图区域(坐标系) axes
实际绘图的区域
坐标系标题 title
实际绘图的区域
轴标签 xlabel ylabel
实际绘图的区域
导入模块
复制代码
 import seaborn as sb
  import numpy as np
  import pandas as pd
  import matplotlib.pyplot as plt
  from pandas import Series,DataFrame

复制代码
使用 matplotlib.pyplot 获取一个 numpy 数组,数据来源于一张图片
1
2
3
4
img_arr = plt.imread(‘./bobby.jpg’)
plt.imshow(img_arr) # 显示照片
plt.imshow(img_arr - 66) # 改变照片颜色
plt.imshow(img_arr[:,::-1,:]) # 将照片的列反转
 包含单条曲线的图

x=[1,2,3,4,5]
y=[2,4,6,8,10]
plt.plot(x,y)

绘制抛物线

x = np.linspace(-np.pi,np.pi,num=20)
y = x**2
plt.plot(x,y)

绘制正弦曲线图

x
y = np.sin(x)
plt.plot(x,y)

包含多个曲线

将多个曲线图绘制在一个 table 区域中:对象形式创建表图
a=plt.subplot(row,col,loc) 创建曲线图
a.plot(x,y) 绘制曲线图
复制代码
ax1 = plt.subplot(221)
ax1.plot(x,y)

ax2 = plt.subplot(2,2,2)
ax2.plot(x,y)

ax3 = plt.subplot(2,2,3)
ax3.plot(x,y)

ax4 = plt.subplot(2,2,4)
ax4.plot(x,y)
复制代码

网格线 plt.gride(XXX)
参数:

  • axis
  • color: 支持十六进制颜色
  • linestyle: – -. :
  • alpha
    绘制一个正弦曲线图,并设置网格

坐标轴界限
axis 方法: 设置 x,y 轴刻度值的范围
plt.axis([xmin,xmax,ymin,ymax])

plt.axis(‘off’) 关闭坐标轴
设置画布比例:plt.figure(figsize=(a,b)) a:x 刻度比例 b:y 刻度比例 (2:1)表示 x 刻度显示为 y 刻度显示的 2 倍
坐标轴标签
s 标签内容
color 标签颜色
fontsize 字体大小
rotation 旋转角度
plt 的 xlabel 方法和 ylabel 方法 title 方法
图例
legend 方法
两种传参方法:

分别在 plot 函数中增加 label 参数, 再调用 plt.legend() 方法显示
直接在 legend 方法中传入字符串列表
legend 的参数
- loc 参数
loc 参数用于设置图例标签的位置,一般在 legend 函数内
matplotlib 已经预定义好几种数字表示的位置
保存图片
使用 figure 对象的 savefig 函数来保存图片
fig = plt.figure()—必须放置在绘图操作之前

figure.savefig 的参数选项

filename
含有文件路径的字符串或 Python 的文件型对象。图像格式由文件扩展名推断得出,例如,.pdf 推断出 PDF,.png 推断出 PNG (“png”、“pdf”、“svg”、“ps”、“eps”……)
dpi
图像分辨率(每英寸点数),默认为 100
facecolor ,打开保存图片查看 图像的背景色,默认为“w”(白色)
设置 plot 的风格和样式
plot 语句中支持除 X,Y 以外的参数,以字符串形式存在,来控制颜色、线型、点型等要素,语法形式为:
plt.plot(X, Y, ‘format’, …)

颜色值的方式
别名
color=‘r’
合法的 HTML 颜色名
color = ‘red’
HTML 十六进制字符串
color = ‘#eeefff’
归一化到 [0, 1] 的 RGB 元组
color = (0.3, 0.3, 0.4)
线型
参数 linestyle 或 ls

点型
marker 设置点形
markersize 设置点形大小

复制代码

绘制线 plt.plot(x1,y1,x2,y2)

网格线 plt.grid(True) axes.grid(color,ls,lw,alpha)

获取坐标系 plt.subplot(n1,n2,n3)

坐标轴标签 plt.xlabel()plt.ylabel()

坐标系标题 plt.title()

图例 plt.legend([names],ncol=2,loc=1)plt.plot(label=‘name’)

线风格 – -. : None step

图片保存 figure.savefig()

点的设置 marker markersize markerfacecolor markeredgecolor\width

坐标轴刻度 plt.xticks(刻度列表,刻度标签列表) plt.yticks()

axes.set_xticks(刻度列表) axes.set_xticklabels(刻度标签列表)

复制代码
三、2D 图形

直方图
是一个特殊的柱状图,又叫做密度图。
【直方图的参数只有一个 x!!!不像条形图需要传入 x,y】

plt.hist() 的参数

bins
直方图的柱数,可选项,默认为 10
color
指定直方图的颜色。可以是单一颜色值或颜色的序列。如果指定了多个数据集合, 例如 DataFrame 对象,颜色序列将会设置为相同的顺序。如果未指定,将会使用一个默认的线条颜色
orientation
通过设置 orientation 为 horizontal 创建水平直方图。默认值为 vertical
data = [1,2,3,3,4,2,5]
plt.hist(data,bins=10)

条形图:plt.bar()
参数:第一个参数是索引。第二个参数是数据值。第三个参数是条形的宽度
-【条形图有两个参数 x,y】

width 纵向设置条形宽度
height 横向设置条形高度
bar()、barh()

num = [1,2,3,4,5]
count = [2,4,6,8,10]
plt.barh(num,count)

饼图
【饼图也只有一个参数 x】

pie()
饼图适合展示各部分占总体的比例,条形图适合比较各部分的大小

复制代码
饼图阴影、分裂等属性设置

#labels 参数设置每一块的标签;

#labeldistance 参数设置标签距离圆心的距离(比例值)

#autopct 参数设置比例值小数保留位 (%.3f%%);

#pctdistance 参数设置比例值文字距离圆心的距离

#explode 参数设置每一块顶点距圆心的长度(比例值, 列表);

#colors 参数设置每一块的颜色(列表);

#shadow 参数为布尔值,设置是否绘制阴影

#startangle 参数设置饼图起始角度
复制代码

复制代码
arr=[11,22,31,15]
plt.pie(arr,labels=[‘a’,‘b’,‘c’,‘d’])

#labeldistance 参数设置标签距离圆心的距离(比例值)
arr=[11,22,31,15]
plt.pie(arr,labels=[‘a’,‘b’,‘c’,‘d’],labeldistance=0.3)
复制代码

#autopct 参数设置比例值小数保留位 (%.3f%%);
arr=[11,22,31,15]
plt.pie(arr,labels=[‘a’,‘b’,‘c’,‘d’],labeldistance=0.3,autopct=‘%.6f%%’)

##explode 参数设置每一块顶点距圆心的长度(比例值, 列表);
arr=[11,22,31,15]
plt.pie(arr,labels=[‘a’,‘b’,‘c’,‘d’],labeldistance=0.3,shadow=True,explode=[0.2,0.3,0.2,0.4])

#startangle 参数设置饼图起始角度
arr=[11,22,31,15]
plt.pie(arr,labels=[‘a’,‘b’,‘c’,‘d’],startangle=50)

散点图:因变量随自变量而变化的大致趋势¶
【散点图需要两个参数 x,y,但此时 x 不是表示 x 轴的刻度,而是每个点的横坐标!】

scatter()

x = np.random.randint(0,10,size=(20,))
y = np.random.randint(0,10,size=(20,))
plt.scatter(x,y,marker=‘d’,c=“rbgy”) 设置不同的散点颜色

绘制条形图
countplot(data:数据集, x:x 坐标轴, color:条形图颜色, order:排序)

color_palette():返回一个 RGB 元组列表

复制代码
test = pd.read_csv(‘pokemon.csv’)
print(test.shape)
print(test.tail(10))

value_counts 函数统计各序列频率,并降序

generation_order = test[‘generation_id’].value_counts().index
print(generation_order)

color_palette 返回一个 RGB 元组列表

base_color = sb.color_palette()[0]
sb.countplot(data=test, x=‘generation_id’, color=base_color, order=generation_order)
plt.show()
复制代码
xticks(rotation:旋转度数):更改绘制 x 轴标签方向(与水平方向的逆时针夹角度数)

yticks(rotation:旋转度数):更改绘制 y 轴标签方向(与垂直方向的逆时针夹角度数)

1 plt.xticks(rotation=90)
2 plt.yticks(rotation=45)
Matplotlib 中的基本图表包括的元素

x 轴和 y 轴 axis
水平和垂直的轴线
x 轴和 y 轴刻度 tick
刻度标示坐标轴的分隔,包括最小刻度和最大刻度
x 轴和 y 轴刻度标签 tick label
表示特定坐标轴的值
绘图区域(坐标系) axes
实际绘图的区域
坐标系标题 title
实际绘图的区域
轴标签 xlabel ylabel
实际绘图的区域
导入模块
复制代码
 import seaborn as sb
  import numpy as np
  import pandas as pd
  import matplotlib.pyplot as plt
  from pandas import Series,DataFrame

复制代码
使用 matplotlib.pyplot 获取一个 numpy 数组,数据来源于一张图片
1
2
3
4
img_arr = plt.imread(‘./bobby.jpg’)
plt.imshow(img_arr) # 显示照片
plt.imshow(img_arr - 66) # 改变照片颜色
plt.imshow(img_arr[:,::-1,:]) # 将照片的列反转
 包含单条曲线的图

x=[1,2,3,4,5]
y=[2,4,6,8,10]
plt.plot(x,y)

绘制抛物线

x = np.linspace(-np.pi,np.pi,num=20)
y = x**2
plt.plot(x,y)

绘制正弦曲线图

x
y = np.sin(x)
plt.plot(x,y)

包含多个曲线

将多个曲线图绘制在一个 table 区域中:对象形式创建表图
a=plt.subplot(row,col,loc) 创建曲线图
a.plot(x,y) 绘制曲线图
复制代码
ax1 = plt.subplot(221)
ax1.plot(x,y)

ax2 = plt.subplot(2,2,2)
ax2.plot(x,y)

ax3 = plt.subplot(2,2,3)
ax3.plot(x,y)

ax4 = plt.subplot(2,2,4)
ax4.plot(x,y)
复制代码

网格线 plt.gride(XXX)
参数:

  • axis
  • color: 支持十六进制颜色
  • linestyle: – -. :
  • alpha
    绘制一个正弦曲线图,并设置网格

坐标轴界限
axis 方法: 设置 x,y 轴刻度值的范围
plt.axis([xmin,xmax,ymin,ymax])

plt.axis(‘off’) 关闭坐标轴
设置画布比例:plt.figure(figsize=(a,b)) a:x 刻度比例 b:y 刻度比例 (2:1)表示 x 刻度显示为 y 刻度显示的 2 倍
坐标轴标签
s 标签内容
color 标签颜色
fontsize 字体大小
rotation 旋转角度
plt 的 xlabel 方法和 ylabel 方法 title 方法
图例
legend 方法
两种传参方法:

分别在 plot 函数中增加 label 参数, 再调用 plt.legend() 方法显示
直接在 legend 方法中传入字符串列表
legend 的参数
- loc 参数
loc 参数用于设置图例标签的位置,一般在 legend 函数内
matplotlib 已经预定义好几种数字表示的位置
保存图片
使用 figure 对象的 savefig 函数来保存图片
fig = plt.figure()—必须放置在绘图操作之前

figure.savefig 的参数选项

filename
含有文件路径的字符串或 Python 的文件型对象。图像格式由文件扩展名推断得出,例如,.pdf 推断出 PDF,.png 推断出 PNG (“png”、“pdf”、“svg”、“ps”、“eps”……)
dpi
图像分辨率(每英寸点数),默认为 100
facecolor ,打开保存图片查看 图像的背景色,默认为“w”(白色)
设置 plot 的风格和样式
plot 语句中支持除 X,Y 以外的参数,以字符串形式存在,来控制颜色、线型、点型等要素,语法形式为:
plt.plot(X, Y, ‘format’, …)

颜色值的方式
别名
color=‘r’
合法的 HTML 颜色名
color = ‘red’
HTML 十六进制字符串
color = ‘#eeefff’
归一化到 [0, 1] 的 RGB 元组
color = (0.3, 0.3, 0.4)
线型
参数 linestyle 或 ls

点型
marker 设置点形
markersize 设置点形大小

复制代码

绘制线 plt.plot(x1,y1,x2,y2)

网格线 plt.grid(True) axes.grid(color,ls,lw,alpha)

获取坐标系 plt.subplot(n1,n2,n3)

坐标轴标签 plt.xlabel()plt.ylabel()

坐标系标题 plt.title()

图例 plt.legend([names],ncol=2,loc=1)plt.plot(label=‘name’)

线风格 – -. : None step

图片保存 figure.savefig()

点的设置 marker markersize markerfacecolor markeredgecolor\width

坐标轴刻度 plt.xticks(刻度列表,刻度标签列表) plt.yticks()

axes.set_xticks(刻度列表) axes.set_xticklabels(刻度标签列表)

复制代码
三、2D 图形

直方图
是一个特殊的柱状图,又叫做密度图。
【直方图的参数只有一个 x!!!不像条形图需要传入 x,y】

plt.hist() 的参数

bins
直方图的柱数,可选项,默认为 10
color
指定直方图的颜色。可以是单一颜色值或颜色的序列。如果指定了多个数据集合, 例如 DataFrame 对象,颜色序列将会设置为相同的顺序。如果未指定,将会使用一个默认的线条颜色
orientation
通过设置 orientation 为 horizontal 创建水平直方图。默认值为 vertical
data = [1,2,3,3,4,2,5]
plt.hist(data,bins=10)

条形图:plt.bar()
参数:第一个参数是索引。第二个参数是数据值。第三个参数是条形的宽度
-【条形图有两个参数 x,y】

width 纵向设置条形宽度
height 横向设置条形高度
bar()、barh()

num = [1,2,3,4,5]
count = [2,4,6,8,10]
plt.barh(num,count)

饼图
【饼图也只有一个参数 x】

pie()
饼图适合展示各部分占总体的比例,条形图适合比较各部分的大小

复制代码
饼图阴影、分裂等属性设置

#labels 参数设置每一块的标签;

#labeldistance 参数设置标签距离圆心的距离(比例值)

#autopct 参数设置比例值小数保留位 (%.3f%%);

#pctdistance 参数设置比例值文字距离圆心的距离

#explode 参数设置每一块顶点距圆心的长度(比例值, 列表);

#colors 参数设置每一块的颜色(列表);

#shadow 参数为布尔值,设置是否绘制阴影

#startangle 参数设置饼图起始角度
复制代码

复制代码
arr=[11,22,31,15]
plt.pie(arr,labels=[‘a’,‘b’,‘c’,‘d’])

#labeldistance 参数设置标签距离圆心的距离(比例值)
arr=[11,22,31,15]
plt.pie(arr,labels=[‘a’,‘b’,‘c’,‘d’],labeldistance=0.3)
复制代码

#autopct 参数设置比例值小数保留位 (%.3f%%);
arr=[11,22,31,15]
plt.pie(arr,labels=[‘a’,‘b’,‘c’,‘d’],labeldistance=0.3,autopct=‘%.6f%%’)

##explode 参数设置每一块顶点距圆心的长度(比例值, 列表);
arr=[11,22,31,15]
plt.pie(arr,labels=[‘a’,‘b’,‘c’,‘d’],labeldistance=0.3,shadow=True,explode=[0.2,0.3,0.2,0.4])

#startangle 参数设置饼图起始角度
arr=[11,22,31,15]
plt.pie(arr,labels=[‘a’,‘b’,‘c’,‘d’],startangle=50)

散点图:因变量随自变量而变化的大致趋势¶
【散点图需要两个参数 x,y,但此时 x 不是表示 x 轴的刻度,而是每个点的横坐标!】

scatter()

x = np.random.randint(0,10,size=(20,))
y = np.random.randint(0,10,size=(20,))
plt.scatter(x,y,marker=‘d’,c=“rbgy”) 设置不同的散点颜色

绘制条形图
countplot(data:数据集, x:x 坐标轴, color:条形图颜色, order:排序)

color_palette():返回一个 RGB 元组列表

复制代码
test = pd.read_csv(‘pokemon.csv’)
print(test.shape)
print(test.tail(10))

value_counts 函数统计各序列频率,并降序

generation_order = test[‘generation_id’].value_counts().index
print(generation_order)

color_palette 返回一个 RGB 元组列表

base_color = sb.color_palette()[0]
sb.countplot(data=test, x=‘generation_id’, color=base_color, order=generation_order)
plt.show()
复制代码
xticks(rotation:旋转度数):更改绘制 x 轴标签方向(与水平方向的逆时针夹角度数)

yticks(rotation:旋转度数):更改绘制 y 轴标签方向(与垂直方向的逆时针夹角度数)

1 plt.xticks(rotation=90)
2 plt.yticks(rotation=45)