Matplotlib学习

目录

基本用法

坐标轴设置

legend图例

Annotation标注

Scatter散点图

Bar柱状图

Contours等高线图

Image图像

3D数据

Subplot多合一显示和分格显示

图中图


基本用法

引用模块 matplotlib.pyplot 和 numpy

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-1,1,100)
plt.figure(1)
y1=x**2+1
y2=x+1
plt.plot(x,y1)
plt.plot(x,y2)
plt.show()

 

坐标轴设置

用到lim label ticks 

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-2,2,100)
plt.figure(1)
y1=x**2+1
plt.plot(x,y1,color='green', linewidth=1.0, linestyle='--')#设置颜色 粗细 格式
plt.xlim((-1,2))#设置x轴坐标范围
plt.ylim((0,5)) #设置y轴坐标范围
plt.xlabel('i am x')#设置x轴标签名
plt.ylabel('i am y')#设置y轴标签名
plt.xticks(np.linspace(-2,2,5))#设置x轴坐标
plt.yticks([0,1,2,3,4,5],['worset','bad','normal','good','very good','best'])
plt.show()

 

import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-2,2,100)
plt.figure(1)
y1=x**2+1
plt.plot(x,y1,color='green', linewidth=1.0, linestyle='--')
plt.xlim((-1,2))
plt.ylim((0,5))
plt.xlabel('i am x')
plt.ylabel('i am y')
plt.xticks(np.linspace(-2,2,5))
plt.yticks([0,1,2,3,4,5],['worset','bad','normal','good','very good','best'])
ax = plt.gca()#取四个轴
ax.set_ylim(-1,4)#用axis来设置y轴范围
ax.spines['right'].set_color('none')#颜色设置无
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')#设置坐标位置
ax.yaxis.set_ticks_position('left')
ax.spines['bottom'].set_position(('data',0))#设置坐标轴位置
ax.spines['left'].set_position(('data',0))
plt.show()

legend图例

plt.legend(loc='lower right')

Annotation标注

plt.scatter(x0,y0,s=50,c='r')
plt.text(0.1,3,r'$This\ is\ the\ some\ text.\ \mu\ \sigma_i\ \alpha_t$', fontdict={'size':7,'color':'r'})

Scatter散点图

import matplotlib.pyplot as plt
import numpy as np
n =1024
x=np.random.normal(0,1,n)#随机生成均值为0方差为1
y=np.random.normal(0,1,n)
c=np.arctan2(x,y)
plt.scatter(x,y,s=50,c=c,alpha=0.5)#alpha透明度
plt.xlim((-1.5,1.5))
plt.ylim((-1.5,1.5))
plt.show()

Bar柱状图

import matplotlib.pyplot as plt
import numpy as np
n =10
x=np.arange(n)
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')
for X,Y in zip(x,y1):
    plt.text(X + 0, Y + 0.05, '%.2f' % Y, ha='center', va='bottom')  # ha:横向对齐方式 va:纵向对齐方式
for X, Y in zip(x, y2):
    plt.text(X + 0, -Y - 0.05, '%.2f' % Y, ha='center',va='top')
plt.xlim(-1,n)
plt.ylim(-1.25,1.25)
plt.xticks(())
plt.yticks(())
plt.show()

Contours等高线图

import matplotlib.pyplot as plt
import numpy as np
def f(x, y):#返回高度
    return (1 - x/2 + x**5 + y**3) * np.exp(-x**2 - y**2)
n = 250
x = np.linspace(-3,3,n)#生成坐标
y = np.linspace(-3,3,n)
X,Y = np.meshgrid(x,y)#联立网格
plt.contourf(X, Y, f(X, Y), 8, alpha=0.5, cmap=plt.cm.hot)#设置背景
C = plt.contour(X, Y, f(X, Y), 8, colors='black', linewidth=0.5)#设置线
plt.clabel(C, inline=True, fontsize=10)#设置等高线图
plt.xticks(())#取消坐标
plt.yticks(())
plt.show()

Image图像

import matplotlib.pyplot as plt
import numpy as np
mp = np.array([0.32432423,0.36234235,0.423532525,
               0.36235235,0.43543252,0.523532623,
               0.42235245,0.52552352,0.652523523]).reshape(3,3)#转换成二维数组
plt.imshow(mp, interpolation='sinc',cmap='bone',origin='upper')#interpolation
plt.colorbar(shrink=0.6)#压缩柱状图 还有很多参数
plt.xticks(())
plt.yticks(())
plt.show()

3D数据

引入3D模块

from mpl_toolkits.mplot3d import Axes3D

 3D坐标轴显示

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = Axes3D(fig)
plt.show()

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = Axes3D(fig)
X = np.arange(-5,5,0.2)
Y = np.arange(-5,5,0.2)
X,Y = np.meshgrid(X,Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)

ax.plot_surface(X,Y,Z,rstride=1,cstride=1,cmap=('rainbow'))#stride网格参数 cmap颜色
ax.contourf(X,Y,Z,zdir='z',offset=-2,cmap='rainbow')#dir位置 offset相对位置
ax.set_zlim(-2,2)#z轴范围
plt.show()

 

Subplot多合一显示和分格显示

多合一显示

import matplotlib.pyplot as plt
plt.figure()
plt.subplot(2,1,1)
plt.subplot(2,2,3)
plt.subplot(2,2,4)
plt.show()

分格显示

import matplotlib.pyplot as plt
plt.figure()
ax1 = plt.subplot2grid((3,3),(0,0),colspan=3,rowspan=1)
ax1.set_title("1")
ax2 = plt.subplot2grid((3,3),(1,0),colspan=2,rowspan=1)
ax2.set_title("2")
ax3 = plt.subplot2grid((3,3),(1,2),colspan=1,rowspan=2)
ax3.set_title("3")
ax4 = plt.subplot2grid((3,3),(2,0),colspan=1,rowspan=1)
ax4.set_title("4")
ax5 = plt.subplot2grid((3,3),(2,1),colspan=1,rowspan=1)
ax5.set_title("5")
plt.show()

图中图

import matplotlib.pyplot as plt
fig = plt.figure()
x = [1,2,3,4,5,6,7]
y = [1,3,4,2,5,8,6]

left,bottom,width,height=0.1,0.1,0.8,0.8
ax1 = fig.add_axes([left,bottom,width,height])
ax1.plot(x,y,'r')

left,bottom,width,height=0.2,0.6,0.25,0.25
ax2 = fig.add_axes([left,bottom,width,height])
ax2.plot(y,x,'b')

plt.show()

 

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大厂候选人

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

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

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

打赏作者

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

抵扣说明:

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

余额充值