Matplotlib学习笔记

本文学习笔记整理内容

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())

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值