【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,yx轴和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()

结果
在这里插入图片描述



  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

比奇堡咻飞兜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值