安装:pip install matplotlib
导入模块:
# 导入模块
import matplotlib.pyplot as plt
# 处理中文正常显示
plt.rcParams['font.sans-serif'] = ['SimHei']
# 处理 负号 的正常显示
plt.rcParams['axes.unicode_minus'] = False
一、图例、标题和标签
#规定画布大小
plt.figure(figsize=(8,4))
#准备2组坐标
x =[1,2,3]
y=[5,7,4]
x1=[1,2,3]
y1=[10,14,12]
#画图
#label:规定标注
plt.plot(x,y,label='第一条线')
plt.plot(x1,y1,label='第二条线')
#xlabel\ylabel x轴的标注和y轴的标注
plt.xlabel('x轴')
plt.ylabel('y轴')
# 整个图的标题
plt.title('包含图例、标题与标签的图')
# legend 图例
plt.legend()
#显示图像
plt.show()
二、画各种图
1.折线图(plot)
# 准备数据
x = [1,2,3,4,5,6,7,8]
y = [5,2,4,2,1,2,3,1]
# 绘制折线图
plt.plot(x,y,label='折线图')
# 绘制x轴
plt.xlabel('x轴')
# 绘制y轴
plt.ylabel('y轴')
# 标题
plt.title('绘制折线图')
# 使用图例
plt.legend()
# plt.show()
2.柱状图、条形图
柱状图:bar
条形图:hbar
(1)柱状图
# 准备一组数据
x = [1,3,5,7,9]
y = [5,4,2,8,6]
plt.bar(x,y,label='柱状图-01',color='#CC7777')
# color ='xxx'参数,设置图标显示的颜色
# plt.bar(x,y,label='柱状图-01',color='y')
plt.bar([2,4,6,8,10],x,label='柱状图-02',color='#17a05E')
# 颜色取得 得方式:(1)qq截图 选中颜色后按住ctrl 会显示为16进制颜色
#(2)百度 常用十六进制颜色对照表
#(3)网页中 右击检查 color:
plt.xlabel('x轴')
plt.ylabel('y轴')
plt.legend()
plt.show()
2.条形图
# 准备一组数据
x = [1,3,5,7,9]
y = [5,4,2,8,6]
plt.barh(x,y,label='条形图-01',color='#CC7777')
# color ='xxx'参数,设置图标显示的颜色
# plt.bar(x,y,label='柱状图-01',color='y')
plt.barh([2,4,6,8,10],x,label='条形图-02',color='#17a05E')
# 颜色取得 得方式:(1)qq截图 选中颜色后按住ctrl 会显示为16进制颜色
#(2)百度 常用十六进制颜色对照表
#(3)网页中 右击检查 color:
plt.xlabel('x轴')
plt.ylabel('y轴')
plt.legend()
plt.show()
3.直方图(hist)
# 创建一组数据
ages = np.random.randint(18,80,200)
# bins = [10,20,30,40,50,60,70,80],创建一个分区
bins = np.arange(1,9)*10
# 画直方图
plt.hist(ages,bins,histtype='bar',label='年龄直方图',rwidth=0.8)
plt.title('200人年龄分布直方图')
plt.xlabel('年龄')
plt.ylabel('个数')
plt.legend()
plt.show()
4.饼图(pie)
# 准备四个数据
slices = [7,2,2,13]
# 给数据起的标签名
activities = ['eat','sleep','work','play']
# 给图准备的颜色
cols = ['c','#FFE76E','#CC0001','#3D79AA']
# 准备一块画布,画布规定尺寸为6x6,如果不是正方形的尺寸可能饼图会是椭圆形的
plt.figure(figsize=(6,6))
plt.pie(
slices,#数据
labels=activities,#标签
#开始的角度
startangle=0, # 开始画的角度
# 阴影
# shadow=True,
#切出来
explode=(0,0.1,0,0), # 范围是0-1 ,决定离开程度
autopct='%1.2f%%', # 显示值,保留2位小数
colors=cols #运用颜色
)
plt.title('饼状图') #图形标题
plt.show()
5.散点图(scatter)
# 准备一组数据
x = [1,2,3,4,5,6,7,8]
y = [5,4,2,6,7,5,1,8]
# 画散点图,marker 可以是s,o,*,+,x,v,_,h,d,逗号,.,等等,s是代表点的大小
plt.scatter(x,y,label='散点图',c='#000000',marker='s',s=280)
plt.xlabel('x')
plt.ylabel('y')
plt.title('散点图')
plt.legend()
plt.show()
6.堆叠图(stackplot)
# 随意创建的一周中每天的时间分配
days= range(1,6)
sleeping =[10,5,11,8,7]
eating = [2,3,3,1,4]
studying =[8,7,2,1,12]
playing =[4,9,8,14,1]
# 上面四行是拿来弄图例的
plt.plot([],[],c='r',label='sleeping',linewidth=5)
plt.plot([],[],c='y',label='eating',linewidth=5)
plt.plot([],[],c='c',label='studying',linewidth=5)
plt.plot([],[],c='b',label='playing',linewidth=5)
plt.stackplot(days,sleeping,eating,studying,playing,colors=['r','y','c','b'])
plt.title('堆叠图')
plt.legend()
plt.xlabel('天数')
plt.ylabel('小时数')
plt.show()
7.sin和cos图
# linspace(start,end,n=50) 在start和end之间均匀得返回n个数字
x = np.linspace(-np.pi, np.pi, 256, endpoint=True) # 在Π和-Π之间取了256个数,endpoint包括端点
C = np.cos(x) # 对上面取的值求cos
S = np.sin(x) # 对上面取得值求sin
#调整坐标轴
plt.xlim(x.min()*1.5,x.max()*1.5)
plt.ylim(C.min()*1.5,C.max()*1.5)
# 修改
plt.xticks(
[-np.pi,-np.pi/2,0,np.pi/2,np.pi],
[r'$-\pi$','$-\pi/2$','$0$','$\pi/2$','$\pi$']
)
plt.yticks([-1,0,1])
# 通过plt.gca() 获取Axes对象ax
ax=plt.gca()
# 把右边和上面设置为不可见
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
# 把下边界和左边界移动到0点
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))
#绘制图像
plt.plot(x,C,color='b',linewidth=3,label='cos') # 画cos图像(折线图)
plt.plot(x,S,'r',lw='3',label='sin') # 画sin图像
# plt.legend(loc='') 组合 upper lower right left center 来决定图例的位置
plt.legend(loc='upper left')
# 标注特殊点
t = 2*np.pi/3
#画出需要标注的蓝色的线
plt.plot([t,t],[0,np.cos(t)],color='blue',linewidth=2.5,linestyle='--')
#画出需要标注的蓝色的点
plt.scatter([t,],[np.cos(t),],50,color='b')
#给蓝色的点添加注释(对应点的数学值)
plt.annotate(r'$\cos(\frac{2\pi}{3})=-\frac{1}{2}$',
xy=(t,np.cos(t)),xycoords='data',
xytext=(-90,-50),textcoords='offset points',fontsize=16,
arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=.2'))
#画出需要标注的红色的线
plt.plot([t,t],[0,np.sin(t)],color='r',linewidth=2.5,linestyle='--')
#画出需要标注的红色的点
plt.scatter([t,],[np.sin(t),],50,color='r')
#给红色的点添加注释(对应点的数学值)
plt.annotate(r'$\sin(\frac{2\pi}{3})=\frac{\sqrt{3}}{2}$',
xy=(t,np.sin(t)),xycoords='data',
xytext=(+10,+40),textcoords='offset points',fontsize=16,
arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=.2'))
for label in ax.get_xticklabels()+ax.get_yticklabels():
label.set_fontsize(18)
label.set_bbox(dict(facecolor='w',edgecolor='None',alpha=0.4))
plt.show()