Matplotlib绘制基本图表
Posted 桃陉
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Matplotlib绘制基本图表相关的知识,希望对你有一定的参考价值。
目录
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,edgecoloMatplotlib模块 |图表绘制工具