1.准备工作
∙
\bullet
∙ 需要的库:matplotlib库用来绘制图形,它的子库pyplot提供了与MATLAB类似的绘图API。numpy库用来处理数据。
∙
\bullet
∙ 引入(我们后面使用它的简略形式):
import matplotlib.pyplot as plt #基本上只需要使用matplotlib的pyplot库
import numpy as np #数据处理
%matplotlib inline #确保图形显示
2.基本操作
2.1 创建绘图对象(figure)
在绘图前我们需要创建绘图对象,若直接调用plot函数,那么Matplotlib就会自动创建一个绘图对象。
基本格式
:
p
l
t
.
p
l
o
t
(
n
u
m
=
N
o
n
e
,
f
i
g
s
i
z
e
=
N
o
n
e
,
d
p
i
=
N
o
n
e
,
f
a
c
e
c
o
l
o
e
=
N
o
d
e
,
e
d
g
e
c
o
l
o
r
=
N
o
n
e
.
.
.
)
plt.plot(num=None,figsize=None,dpi=None,facecoloe=Node,edgecolor=None...)
plt.plot(num=None,figsize=None,dpi=None,facecoloe=Node,edgecolor=None...)
基本参数介绍
:
参数名称 | 作用 |
---|---|
num | 接收int或string,如果未提供该参数将默认生成,并且图形编号递增。 |
figsize | 接收元组,比如说 figsize=(5,5) 指定了绘图对象的宽度和高度,单位为英寸。 |
dpi | 接收int,表示分辨率,即每英寸多少个像素,默认值为80. |
facecolor | 表示背景颜色 |
edgecolor | 表示边框颜色 |
2.2 绘制图表(plot)
函数格式
:
p
l
t
.
p
l
o
t
(
x
,
y
,
l
a
b
e
l
,
c
o
l
o
r
,
l
i
n
e
w
i
d
t
h
,
l
i
n
e
s
t
y
l
e
)
plt.plot(x,y,label,color,linewidth,linestyle)
plt.plot(x,y,label,color,linewidth,linestyle)
参数说明
:
函数参数 | 参数作用 |
---|---|
x | x轴上的数值 |
y | y轴上的数值 |
ld (linewidth) | 线条的粗细 |
ls(linestyle) | 线条的格式 |
c(color) | 线条颜色 |
maker | 线条上点的形状 |
makeredgecolor | 点的边框颜色 |
makersize | 点的大小 |
makerfacecolor | 点的填充颜色 |
label | 文本标签 |
linestyle
(四种):
∙
\bullet
∙ ‘-’ 实线
∙
\bullet
∙ ‘- -’ 虚线
∙
\bullet
∙ '-.'点划线
∙
\bullet
∙ ':'实点线
首先我们得生成关于x和y的列表,然后才可以进行绘图。
简单直线的显示
:
∙
\bullet
∙ plt.plot(x,y) #就是构造关于x和y的这条直线
∙
\bullet
∙ plt.show() #就是显示这条直线
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-3,3,50) #x轴上从-3到3的50个点
y = 2*x+1 #函数关系式
plt.plot(x,y)
plt.show()
2.3 标签
参数说明
:
参数名称 | 作用 |
---|---|
plt.xlabel() | x轴的名称,可以指定位置、颜色、字体大小等参数 |
plt.ylabel() | y轴的名称,可以指定位置、颜色、字体大小等参数 |
plt.title() | 图表的标题,可以指定位置、颜色、字体大小等参数 |
plt.xlim() | 图形显示x轴的范围 |
plt.ylim() | 图形显示y轴的范围 |
plt.xticks() | 指定x轴刻度的数目与取值 |
plt.yticks() | 指定y轴刻度的数目与取值 |
实例
:
import matplotlib.pyplot as plt #基本上只需要使用matplotlib的pyplot库
import numpy as np #数据处理
x = np.linspace(-3,3,50) #x轴上从-3到3的50个点
y1 = 2*x+1 #函数关系式
y2 = x**2
plt.figure(num=1)
plt.plot(x,y1) #color表示颜色,linewidth表示宽度,linestyle表示线的类型
plt.plot(x,y2,color='red',linewidth=1.0,linestyle='--')
plt.xlim(-1,2) #设置x轴的范围
plt.ylim(-1,4) #设置y轴的范围
plt.xlabel('I am x') #设置x轴的名字
plt.ylabel('I am y') #设置y轴的名字
#具体的设置x轴\y轴的坐标值
new_ticks = np.linspace(-1,2,5)
plt.xticks(new_ticks) #可以使用固定距离的坐标
plt.yticks([-1,-0.5,1,1.5,2],[r'$really\ bad$',r'$bad\ \alpha$',r'$normal$',r'$good$',r'$really\ good$']) #第一个列表放入位置,第二个列表放入名称与第一个列表一一对应
plt.show()
2.4 移动坐标轴
∙
\bullet
∙ spines表示边,一共有top、bottom、right、left
∙
\bullet
∙ 我们控制它的右边和上边消失,让下边和左边移动过来
∙
\bullet
∙ set_position中第一个参数在元组里,表示在数据的0位置
实例
:
#插入上边代码中即可运行
#gac='get current axis'
ax = plt.gca() #将上面的图片放入ax中
ax.spines['right'].set_color('none') #设置右边、上面top的边消失
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom') #将下面和左边的边设置为这个图面的x、y轴
ax.yaxis.set_ticks_position('left')
#设置边所在的坐标位置
ax.spines['bottom'].set_position(('data',0)) #参数axes显示所占百分比
ax.spines['left'].set_position(('data',0))
plt.show()
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(-1,1,10) #x轴上从-1到1的10个点
y1 = 2*x+1 #函数关系式
y2 = x**2
plt.figure(num=1,figsize=(5,5))
plt.plot(x,y1)
plt.figure(num=2)
plt.plot(x,y2,color = 'red',linewidth = 1.0,linestyle = '--')
plt.show()
2.5 图例(legend)
参数说明
:
legend函数参数 | 参数作用 |
---|---|
handles | 一个列表,包含你想要的显示的图线返回值 |
labels | 一个列表,可以统一对图形图例进行名称定义 |
loc | 图例位置,默认为best |
plt.rcParams[“font.sans-serif”] = [“SimHei”] #解决中文乱码问题
plt.rcParams[“axes.unicode_minus”] = False #使一些符号正常显示
plt.legend() #默认生成图例
实例
:
∙
\bullet
∙ 默认生成
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
x = np.linspace(-1,1,30) #x轴上从-1到1的30个点
y1 = x**2
y2 = 2*x+1
plt.figure()
plt.rcParams["font.sans-serif"] = ["SimHei"] #解决中文乱码问题
plt.rcParams["axes.unicode_minus"] = False #使一些符号正常显示
l1, = plt.plot(x,y1,label="图形 y1 = x^2")
l2, = plt.plot(x,y2,label="图形 y2 = 2*x+1")
plt.legend() #默认生成
plt.show()
∙
\bullet
∙ 含参
#含参的legend
plt.legend(handles=[l1,l2],labels=['图线1','图线2'],loc='upper right')
2.6 保存图像
函数
:可以指定图表的分辨率、边缘和颜色等参数
plt.savefig("E:/可视化.png")
结果
: