本文学习笔记整理内容
import matplotlib.pyplot as plt
import numpy as np
x = [1,2,3,4]
y = [2,5,4,2]
print(plt.plot(x,y)) #折线图
print(plt.show()) #显示图形
print(plt.style.use('seaborn-whitegrid')) #显示类型
print(plt.savefig('1.png')) #保存
1.折线图
x = np.linspace(0,2*np.pi,100)
print(plt.style.use('seaborn-whitegrid'))
print(plt.plot(x,np.sin(x),color='green',linestyle='--')) # - -- -. :
print(plt.plot(x,np.cos(x),c = 'red',ls=':',linewidth = 10)) #linewidth粗细可缩写lw
print(plt.show())
"""
颜色 color c
线的类型 linestyle ls
风格 marker * o s + 标点
markersize 标点的大小 缩写ms
可统一设置直接写"go--" 但是粗细,大小还是要用函数
plt.xlim(0,2*3.14) 改变定义域
plt.ylim(-1,4) 改变值域
或者
plt.axis([1,2*3.14,-1,4]) xy轴
plt.axis('tight') 图形紧凑
plt.axis('equal') 图形松散
?plt.axis可以了解函数的详细信息
修改刻度
plt.xticks(np.arange(0,7,2)) 每隔两个单位在0-7之间
plt.yticks(np.arange(-1,3,2))
修改坐标数字的大小
plt.tick_params(labelsize =15) 全改
plt.tick_params(axis='x',labelsize =15) 改x轴
plt.tick_params(axis='y',labelsize =15) 改y轴
给图添加名字
plt.title(sin$cos",fontsize=12) 字体大小
plt.ylabel('y',fontsize=12) y轴命名
plt.xlabel('x',fontsize=12) x轴命名
图例
plt.plot(x,np.sin(x),label ='sinx')
plt.plot(x,np.cos(x),label ='cosx')
plt.legend()显示图例的函数,必须要加上 位置自由选择
plt.legend(loc = 'upper right'位置,frameon = True 是否有方框,fontsize=10)位置限制
加入文字
plt.text(3.4,3,位置'sinx'内容,fontsize=10)
标记箭头
plt.annotate()
"""
2.散点图
作图
plt.scatter(x,np.sin(x),c='r',s=30,marker='s')
图例颜色随着y而变化
plt.scatter(x,y,c=y,camp='hot')
plt.colorbar()
3.柱状图
x = np.arange(1,6)
color = ['red','yellow','blue'] #颜色列表
b =plt.bar(x,2*x,width=0.5,alpha=0.5,color='color ,edgecolor='black') #边框的颜色
c = plt.tick_params(labelsize=13) #刻度大小
print(b)
print(c)
print(plt.show())
plt.xticks(x,['A',"B","C","D"]) #更改横坐标
两个图的上下叠加
x = np.arange(5)
y1 = np.random.rand(5)
y2 = np.random.rand(5)
print(plt.bar(x,y1,width=0.5,label="USA"))
print(plt.bar(x,y2,width=0.5,bottom=y1,label="CHINA"))
print(plt.legend())
print(plt.show())
两个图形的左右相邻
x = np.arange(5)
y1 = np.random.rand(5)
y2 = np.random.rand(5)
print(plt.bar(x,y1,width=0.3,label="USA"))
print(plt.bar(x+0.3,y2,width=0.3,label="CHINA"))
print(plt.legend())
print(plt.show())
两个图形的左右相邻 且图形是横的
x = np.arange(5)
y1 = np.random.rand(5)
y2 = np.random.rand(5)
print(plt.barh(x,y1,height=0.3,label="USA"))
print(plt.barh(x+0.3,y2,height=0.3,label="CHINA"))
print(plt.legend())
print(plt.show())
4.多子图
x = np.arange(1,11)
y = x**2
print(plt.subplot(121)) #一行两列画的是第一个图
print(plt.plot(x,y,'r*:'))
print(plt.subplot(122)) #一行两列画的是第二个图
print(plt.bar(x,y,color = 'green'))
print(plt.show())
plt.subplots_adjust(hspace=0.5,wspace=0.3) #设置画布中图形的行宽距
grid = plt.GridSpec(2,3,hasace=0.5,wspace=0.3) #画布划分,不规则的分布
plt.subplot(grid[0,0]) #取画布的第一行第一列
plt.subplot(grid[0,1:]) #取画布的第一行第二三列
plt.subplot(grid[1,:]) #取画布的第二行第一二三列
5.等高图、颜色图
带颜色填充
x = np.linspace(0,6.28,500) #取500个点
y = np.linspace(0,6.28,500)
x,y = np.meshgrid(x,y) #将xy网格化,有(500,500个坐标点
point = np.stack([x,y],axis=2) #组合 两个维度进行拼接
z = np.sin(point[...,0])+ np.cos(point[...,1])
print(plt.contourf(z)) #等高线的函数 带颜色填充
print(plt.colorbar())
print(plt.show())
不带颜色填充,只有等高线
x = np.linspace(0,6.28,500) #取500个点
y = np.linspace(0,6.28,500)
x,y = np.meshgrid(x,y) #将xy网格化,有(500,500个坐标点
point = np.stack([x,y],axis=2) #组合 两个维度进行拼接
z = np.sin(point[...,0])+ np.cos(point[...,1])
c=plt.contour(z) #等高线的函数
print(plt.clabel(c,inline=True))
print(plt.colorbar())
print(plt.show())
6.颜色图
x = np.linspace(0,6.28,500) #取500个点
y = np.linspace(0,6.28,500)
x,y = np.meshgrid(x,y) #将xy网格化,有(500,500个坐标点
point = np.stack([x,y],axis=2) #组合 两个维度进行拼接
z = np.sin(point[...,0])+ np.cos(point[...,1])
c= plt.imshow(z,'cool')
print(plt.colorbar())
print(plt.show())
7.直方图 频次
x = np.random.normal(0,1,10000)
print(plt.hist(x,bins=50))
print(plt.show())
x = np.random.normal(0,1,10000)
print(plt.hist(x,bins=50,histtype='step')) #选择不同的风格
print(plt.show())
8.概率密度图
x = np.random.normal(0,1,10000)
print(plt.hist(x,50,density=True))
print(plt.text(-3,0.3,r'$\mu=0,\sigma=1$,fontsize=13'))
print(plt.show())
9.概率密度累加图
x = np.random.normal(0,1,10000)
print(plt.hist(x,50,density=True,cumulative=True)) #对概率密度进行累加
print(plt.show())
10.误差图 两种不同类型
x = np.linspace(0,10,20)
y = np.sin(x)
print(plt.errorbar(x,y,yerr=0.1,fmt='r+'))
print(plt.show())
x = ['a','b','c','d','e']
y = np.random.random(5)
ye = [0.01,0.02,0.03,0.04,0.05]
print(plt.bar(x,y,width=0.5,yerr=ye))
print(plt.show())
11.面向对象画图
x = np.linspace(0,10,5)
y = x**2
fig = plt.figure(figsize=(8,4),dpi=80)
ax = fig.add_axes([0.1,0.1,0.8,0.8])
print(ax.plot(x,y))
print(ax.set_title('title'))
print(plt.show())
俩个图在一个画布上 图中图
x = np.linspace(0,10,5)
y = x**2
fig = plt.figure(figsize=(8,4),dpi=80)
ax1 = fig.add_axes([0.1,0.1,0.8,0.8])
ax2 = fig.add_axes([0.2,0.5,0.3,0.3])
print(ax1.plot(x,y))
print(ax2.plot(x,y,'r'))
print(ax1.set_title('title'))
print(plt.show())
12.3D画图
数据线
from mpl_toolkits import mplot3d
ax = plt.axes(projection='3d')
z = np.linspace(0,20,1000)
x = np.sin(z)
y= np.cos(z)
print(ax.plot3D(x,y,z))
print(plt.show())
点和线的结合
ax = plt.axes(projection='3d')
z = np.linspace(0,20,100)
x = np.sin(z)
y= np.cos(z)
print(ax.plot3D(x,y,z))
print(ax.scatter3D(x,y,z,c=z,cmap='cool'))
print(plt.show())
3维曲面
x = np.linspace(-3,3,30)
y = np.linspace(-3,3,30)
x,y = np.meshgrid(x,y)
z = np.sin(x)+np.cos(x)
ax = plt.axes(projection='3d')
print(ax.plot_surface(x,y,z,cmap='hot',alpha=0.8)) #alpha 透明度
print(plt.show())