目录
1.散点图
1.1函数scatter
函数格式
:
p
l
t
.
s
c
a
t
t
e
r
(
x
,
y
,
s
=
N
o
n
e
,
m
a
r
k
e
r
=
N
o
n
e
,
a
l
p
h
a
.
.
.
)
plt.scatter(x,y,s=None,marker=None,alpha...)
plt.scatter(x,y,s=None,marker=None,alpha...)
参数说明
:
参数名称 | 作用 |
---|---|
x,y | x轴和y轴对应数据(一一对应) |
s | 点的大小,传入一个数值,所有点都为这个大小,也可以传入一维数组,表示每个点的大小。 |
c | 点的颜色,传入一维数组可以表示每个点的颜色 |
marker | 字符串类型,表示绘制的点的形状 |
alpha | 接收0-1的小数,表示点的透明度 |
1.2实例
实例1
:
import numpy as np
import matplotlib.pyplot as plt
# 设置Matplotlib正常显示中文和负号
plt.rcParams['font.sans-serif']=['SimHei'] # 用黑体显示中文
plt.rcParams['axes.unicode_minus']=False # 正常显示负号
#生成对应的x、y值
x = np.linspace(1,10,10)
y1 = np.random.randint(1,3,10)
y2 = np.random.randint(6,8,10)
#绘制散点图
plt.figure()
plt.scatter(x,y1,marker='o')
plt.scatter(x,y2,marker='v')
plt.legend({'数据1','数据2'})
plt.xlabel("x值")
plt.ylabel("y值")
plt.show()
结果
:
实例2
:
import numpy as np
import matplotlib.pyplot as plt
#1024个点
n=1024
#随机生成点,0位平均数,1位方差,n为个数
X = np.random.normal(0,1,n)
Y = np.random.normal(0,1,n)
T = np.arctan2(Y,X)#设置颜色
plt.scatter(X,Y,s=75,c=T,alpha=0.5)
#去掉坐标轴以及值
plt.xticks(())
plt.yticks(())
plt.show()
结果
:
2.柱状图
2.1函数bar
函数格式
:
p
l
t
.
b
a
r
(
x
,
h
e
g
i
h
t
,
w
i
d
t
h
=
N
o
n
e
,
f
a
c
e
c
o
l
o
r
,
e
d
g
e
c
o
l
o
r
,
a
l
i
g
n
=
′
c
e
n
t
e
r
′
.
.
.
)
plt.bar(x,hegiht,width=None,facecolor,edgecolor,align='center'...)
plt.bar(x,hegiht,width=None,facecolor,edgecolor,align=′center′...)
参数说明
:
参数名称 | 作用 |
---|---|
x | 表示x轴的数据 |
height | 相当于y,表示每个x对应的高度 |
width | 接收0~1之间的float,指定柱状图宽度,默认为0.8 |
align | 取值为center或edge,默认为center,表示柱状图对齐x坐标 |
facecolor | 表示柱状图的填充颜色 |
edgecolor | 表示柱状图边框的颜色 |
3.2实例
实例1
:正常柱状图
import numpy as np
import matplotlib.pyplot as plt
n = 12
X =np.arange(n)
# uniform为均匀分布,n个数从0.5到1取随机值,区间左闭右开
Y1 = (1-X/float(n))*np.random.uniform(0.5,1.0,n)
#绘制柱状图
plt.bar(X,+Y1,facecolor='#9999ff',edgecolor='white')
#在柱状图上标出具体高度height
for x,y in zip(X,Y1):
plt.text(x,y+0.01,"%.2f"%y,ha='center',va='bottom')
plt.show()
结果
:
实例2
:上下两个柱状图
import numpy as np
import matplotlib.pyplot as plt
n = 12
X =np.arange(n)
# uniform为均匀分布,n个数从0.5到1取随机值,区间左闭右开
Y1 = (1-X/float(n))*np.random.uniform(0.5,1.0,n)
Y2 = (1-X/float(n))*np.random.uniform(0.5,1.0,n)
#绘制柱状图
plt.bar(X,+Y1,facecolor='#9999ff',edgecolor='white')
plt.bar(X,-Y2,facecolor='#ff9999',edgecolor='white')
plt.xticks(())
plt.ylim(-1.2,1.2)
#在柱状图上标出具体高度height
for x,y in zip(X,Y1):
plt.text(x,y+0.01,"%.2f"%y,ha='center',va='bottom')
for x,y in zip(X,Y2):
plt.text(x,-y-0.01,"%.2f"%y,ha='center',va='top')
plt.show()
结果
:
3.等高线图
3.1函数contourf
函数格式
:
p
l
t
.
c
o
n
t
o
u
r
f
(
[
X
,
Y
,
]
,
Z
,
[
l
e
v
e
l
s
]
,
a
l
p
h
a
,
c
m
a
p
.
.
.
)
plt.contourf([X,Y,],Z,[levels],alpha,cmap...)
plt.contourf([X,Y,],Z,[levels],alpha,cmap...)
参数说明
:
参数名称 | 作用 |
---|---|
X,Y | 自变量,用来计算高度 |
Z | 各点求得的高度 |
alpha | 透明度,介于0~1之间 |
levels | 分割区域个数 |
cmap | 表示colormap |
3.2实例
import numpy as np
import matplotlib.pyplot as plt
def f(x,y):
#带入x,y,求得高度z
return (1-x/2+x**5+y**3)*np.exp(x**2-y**2)
n = 256
x = np.linspace(-1.0,1.0,n)
y = np.linspace(-1.0,1.0,n)
X,Y = np.meshgrid(x,y) #将X,Y对应在网格里面,关联起来
#分割线条画出颜色,8表示分成10块,cmap表示colormap,此时为暖色调
plt.contourf(X,Y,f(X,Y),8,alpha=0.75,cmap=plt.cm.hot)
C = plt.contour(X,Y,f(X,Y),8,colors='black',linewidth=.5) #画出线条
plt.clabel(C,inline=True,fontsize=10) #插入标签
plt.xticks(())
plt.yticks(())
plt.show()
结果
:
将cmap改为plt.cm.cool(冷色调)
:
4.饼图
4.1函数pie
函数格式
:
p
l
t
.
p
i
e
(
x
,
e
x
p
l
o
d
e
=
N
o
n
e
,
l
a
b
e
l
s
=
N
o
n
e
,
c
o
l
o
r
s
=
N
o
n
e
,
a
u
t
o
p
c
t
=
N
o
n
e
,
p
c
t
d
i
s
t
a
n
c
e
=
0.6
,
l
a
b
e
l
d
i
s
t
a
n
c
e
=
1.1
,
r
a
d
i
u
s
=
1
)
plt.pie(x,explode=None,labels=None,colors=None,autopct=None,pctdistance=0.6,labeldistance=1.1,radius=1)
plt.pie(x,explode=None,labels=None,colors=None,autopct=None,pctdistance=0.6,labeldistance=1.1,radius=1)
参数说明
:
参数名称 | 作用 |
---|---|
x | 列表,表示绘制饼图的数据 |
explode | 指定各项距离圆心的距离 |
labels | 指定每一项的名称 |
colors | 饼图颜色 |
autopct | 指定数值的显示方式 |
pctdistance | 每一项的比例autopct和距离圆心的半径,默认为0.6 |
labeldistance | 指定每一项的名称label和距离圆心的半径,默认为1.1 |
radius | 表示饼图的半径,默认为1 |
4.2实例
import numpy as np
import matplotlib.pyplot as plt
# 设置Matplotlib正常显示中文和负号
plt.rcParams['font.sans-serif']=['SimHei'] # 用黑体显示中文
plt.rcParams['axes.unicode_minus']=False # 正常显示负号
x = [35,20]
plt.figure()
label = ['城镇就业','乡村就业']
explode = [0.01,0.1]
plt.pie(x,explode=explode,labels=label,autopct='%1.2f%%')
plt.title('2021年城镇和乡村就业人员情况表')
plt.legend()
plt.show()
结果
:
5.直方图
5.1函数hist
函数格式
:
p
l
t
.
h
i
s
t
(
x
,
b
i
n
s
=
N
o
n
e
,
r
a
n
g
e
=
N
o
n
e
,
h
i
s
t
t
y
p
e
=
′
b
a
r
,
a
l
i
g
n
=
′
m
i
d
′
,
r
w
i
d
t
h
=
N
o
n
e
,
c
o
l
o
r
=
N
o
n
e
,
e
d
g
e
c
o
l
o
r
=
,
a
l
p
h
a
,
n
o
r
m
e
d
=
N
o
n
e
)
plt.hist(x,bins=None,range=None,histtype='bar,align='mid',rwidth=None,color=None,edgecolor=,alpha,normed=None)
plt.hist(x,bins=None,range=None,histtype=′bar,align=′mid′,rwidth=None,color=None,edgecolor=,alpha,normed=None)
参数说明
:
参数名称 | 作用 |
---|---|
x | 表示x轴的数据 |
bins | 表示直方图的长条形数目,默认为10 |
range | 接收元组,表示箱子的下部和上部范围,忽略较低和较高的异常值。若未提供,则范围为(x.min(),x.max()) |
histtype | 取值bar、barstacked、step、stepfilled,默认为bar,barstacked 是将多个数据堆叠在一起的条形直方图 |
align | 取值left、mid、right,默认mid |
rwidth | 表示条形的相对宽度作为箱宽的一部分 |
color | 直方图颜色 |
edgecolor | 长条形边框颜色 |
alpha | 接收0~1小数,表示透明度 |
normed | 表示是否将得到的直方图向量归一化,默认为0表示不归一化,显示频数。normed=1,表示归一化,显示频率 |
5.2实例
import numpy as np
import matplotlib.pyplot as plt
# 设置Matplotlib正常显示中文和负号
plt.rcParams['font.sans-serif']=['SimHei'] # 用黑体显示中文
plt.rcParams['axes.unicode_minus']=False # 正常显示负号
#随机生成10000个数,满足正态分布
x = np.random.randn(10000)
plt.hist(x,bins=40,normed=1,color='red',edgecolor='black',rwidth=0.7,alpha=0.7)
plt.xlabel('区间')
plt.ylabel('频数/频率')
plt.title('频数/频率分布直方图')
plt.show()
结果
:histtype=‘bar’
histtype=‘step’,生成一个未填充的线图
:
histtype=‘stepfilled’,生成一个默认填充的线图
:
6.热图
6.1函数imshow
函数格式
:
p
l
t
.
i
m
s
h
o
w
(
x
,
i
n
t
e
r
p
o
l
a
t
i
o
n
,
c
m
a
p
,
o
r
i
g
i
n
)
plt.imshow(x,interpolation,cmap,origin)
plt.imshow(x,interpolation,cmap,origin)
参数说明
:
参数名称 | 作用 |
---|---|
x | 元组,表示生成的表格格式,每个数字代表一个像素 |
interpolation | 表示显示类型,支持的值有:‘none’, ‘nearest’, ‘bilinear’, ‘bicubic’,‘spline16’, ‘spline36’, ‘hanning’, ‘hamming’… |
cmap | 表示colormap,取值hot、cool、gray、bone… |
origin | 将数组的[0,0]索引放在轴的左上角或左下角。可以选择‘upper’、‘lower’ |
6.2实例
import numpy as np
import matplotlib.pyplot as plt
x = np.random.random(9).reshape(3,3)
plt.imshow(x,interpolation='nearest',cmap='bone',origin='lower')
plt.colorbar(shrink=0.9) #表示右边的条所占的长度
plt.xticks(())
plt.yticks(())
plt.show()
结果
:
7.3D图像
7.1函数plot_surface
函数格式:
p
l
t
.
p
l
o
t
_
s
u
r
f
a
c
e
(
x
,
y
,
z
,
c
m
a
p
,
r
s
t
r
i
d
e
,
c
s
t
r
i
d
e
)
plt.plot\_ surface(x,y,z,cmap,rstride,cstride)
plt.plot_surface(x,y,z,cmap,rstride,cstride)
参数说明:
参数名称 | 作用 |
---|---|
x,y | 自变量x和y |
z | 由x和y推导而出的因变量z |
cmap | 表示colormap |
rstride | 表示图片行跨 |
cstride | 表示图片列跨 |
7.2实例
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure() #创建框图
ax = Axes3D(fig) #把框图设置为3D图片
#设置X,Y值,并将X、Y放入网格进行关联
x = np.arange(-4,4,0.25)
y = np.arange(-4,4,0.25)
X,Y = np.meshgrid(x,y)
R = np.sqrt(X**2+Y**2)
Z = np.cos(R)
ax.plot_surface(X,Y,Z,cmap=plt.get_cmap('rainbow'),rstride=1,cstride=1)
ax.contourf(X,Y,Z,zdir='z',offset=-2,cmap='rainbow') #设置底面投影图,zdir表示从哪个方向压下去,offset表示压到哪一层
ax.set_zlim(-2,2) #设置z轴的范围
plt.show()
结果
: