学习笔记-matplot

本文详细介绍了Matplotlib库的基本用法,包括绘制直线、创建figure、坐标轴操作、添加注释、散点图、柱状图、3D图的绘制以及多图显示。此外,还展示了如何显示图像、使用subplot以及自定义坐标轴。内容涵盖了从简单的直线绘制到复杂的3D图形,是学习Matplotlib入门的好材料。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

看了莫烦大佬的视频,做下笔记

目录

1.基本用法

1.1 绘制直线

1.2 创建一个figure

1.3 对坐标轴的操作

 1.4 在图中添加注释

2 各种图的绘制

2.1 散点图

2.2 柱状图

2.3 3D图

3 多图显示

4 img图像显示


 1.基本用法

用之前先安装matplot,安装好之后我们导入包。

import matplotlib.pyplot as plt

最后要显示的时候不要忘了plt.show()

1.1 绘制直线

 plt.plot()

        常用参数:x,    y,    [fmt]

        x,y,对应你画的直线的数据,fmt用于修改直线的format样式,可以修改直线的 color, maker,linestyle。比如  ‘bo--’ ,就会画出一个蓝色的圆形虚线。

plt.plot(x,y1,'bo--',x,y2,'gh:',x,y3) #同时画出了三条线
#也可以单独赋值
plt.plot(x,y1,color = 'red')

1.2 创建一个figure

   plt.figure()

        功能:创建一个画图

        常用参数:num, figsize

        num 给figure编号,figsizie调节大小。

        可以同时画多个figure,每个figure只对自己下面的操作感应,以下一个figure为边界。

plt.figure(num = 3,figsize= (10,8))

1.3 对坐标轴的操作

   plt.xlim() 和 plt.ylim()

        功能:控制坐标轴的长度

plt.xlim(left = -10,right = 10)  #横坐标从-10 到10
plt.ylim(bottom = -10 , top = 10)  #纵坐标从-10 到10

     


  plt.xlabel()  和 plt.ylabel()

        功能:更改标签名,可以配置字体样式,

plt.xlabel('x label')
plt.ylabel('y label')

       


 plt.xticks() 和 plt.ytick()

        功能:更改坐标轴上的记号点

plt.xticks(x,label,color = 'green',rotation=60)
plt.yticks(y1,label1,color = 'green',rotation=60)

      


  plt.gca()

        功能:get current axis ,返回一个ax,可以通过这个改图标的边框属性

ax = plt.gca()
ax.spines['right'].set_color('red')
ax.spines['left'].set_color('blue')
ax.spines['top'].set_color('yellow')
ax.spines['bottom'].set_color('none')

        效果:

       plt中没有默认的x,y轴,我们可以自己设置,

ax.xaxis.set_ticks_position('bottom') #设置bottom 为x轴
ax.yaxis.set_ticks_position('left')   #设置left 为y轴

        使用时,要先做好tick,在设置我们的x轴和y轴,才可以更改轴的位置

import matplotlib.pyplot as plt
import numpy as np
label = ['a', 'b','c','d','e']
label1 = ['very good','good','nomal','bad','very bad']

x = np.linspace(1,10,10)
y1 = x*2 + 1
plt.figure()
ax = plt.gca()
plt.xticks(x)
plt.yticks(y1,label1+label,color = 'green',rotation=60)
ax.xaxis.set_ticks_position('bottom') #设置bottom 为x轴
ax.yaxis.set_ticks_position('left')   #设置left 为y轴
ax.spines['bottom'].set_position(('data', 3))  #'data' 表示跟着数据来定
ax.spines['left'].set_position(('data', 1))  #也有'axes' ,表示在轴的百分之几
plt.show()

        效果:

 1.4 在图中添加注释

   plt.text()

        功能:文本注释

plt.text(x,y,'文字',ha ='center',va ='top')

     


   plt.legend()

        功能:画一个小框框来对解释线。

        在plt.plot中会有返回值,我们取第一个值为legend需要的handls,代码如下

l1, = plt.plot(x,y1,'g--')
l2, = plt.plot(x,y2,'ro:')
plt.legend(handles = [l1,l2,] , labels = ['a','b'],loc = 'best')

         效果:

   


    plt.annotate()

        功能:画一个箭头注释

        第一个参数是你的文本,xy= (   )点的位置,xycoords配置你的箭头位置模式,

textcoords文本位置模式,fontsize字体大小,arrowprops配置箭头的format

plt.annotate(r'2x+1=%s' % y0,   xy=(x0,y0),xycoords = 'data',
            textcoords ='offset points',
            fontsize = 16, 
            arrowprops = dict(arrowstyle = '->', connectionstyle = 'arc3,rad = 2'))

        效果:


2 各种图的绘制

2.1 散点图

        plt.scatter()

        功能:画点的,多几个点就是散点图了

n = 512
X = np.random.normal(0,1,n)
Y = np.random.normal(0,1,n)
T = np.arctan2(Y,X) #只是用来给点配置一些颜色

plt.scatter(X,Y,s=50,c=T,alpha=0.5)
plt.xticks(()) #什么都不显示
plt.yticks(())
plt.show()

        效果: 

2.2 柱状图

        plt.bar()

       很简单,看下面例子就差不多了

X = np.arange(10)
Y = X*np.random.uniform(0,1)
plt.bar(X,Y,facecolor = '#9999ff',edgecolor = 'black')
for x,y in zip(X,Y):
    plt.text(x,y+0.3,'%.2f'%y,ha = 'center',va = 'top')
plt.show()

      效果:

2.3 3D图


3 多图显示

plt.subplot()

         plt.subplot(2,2,1)两行两列的第一个位置

plt.figure()
plt.subplot(2,2,1)
plt.plot([0,1],[1,0])
plt.subplot(2,2,2)
plt.subplot(2,2,3)
plt.subplot(2,2,4)
plt.show()

         也可以在第一行的两个位置,用来显示一个图

plt.figure()
plt.subplot(2,1,1)
plt.plot([0,1],[1,0])
plt.subplot(2,2,3)
plt.subplot(2,2,4)
plt.show()

效果:

 


plt.subplot2grid(shape,origin,colspan,rowspan)

        功能:据网格来画图

        shape大小,origin该图起点,colspan花费多少的列,rowspan多少的行

plt.figure()
ax1 = plt.subplot2grid((3,3),(0,0),colspan=3,rowspan=1)
ax2 = plt.subplot2grid((3,3),(1,0),colspan=2)
ax3 = plt.subplot2grid((3,3),(1,2),rowspan=2)
ax4 = plt.subplot2grid((3,3),(2,0))
ax5 = plt.subplot2grid((3,3),(2,1))


plt.show()

效果:


plt.subplots() 

        感觉用的比较少这个,根据返回的坐标系ax,调用plot就可以画图了,也可以配置坐标系的参数。

 


ax1.twinx()

        功能:在一个图里,画直线,用不同的y轴

 

x = np.arange(0,10,0.1)
y1 = 0.1*x**2
y2 = -0.1*x**2

fig,ax1 = plt.subplots()
ax2 = ax1.twinx()
ax1.plot(x,y1,'g-')
ax2.plot(x,y2,'ro-')

plt.show()

4 img图像显示

plt.imshow()

        在里面放入数据就好,可以是narray的数据,格式为[h , w ,C] ,h高,w宽,C颜色通道

        要想同时显示几张图,可以和plt.subplot一起用。

plt.figure()
for i in range(1,4)
    plt.subplot(2,2,i)
    plt.imshow(imgdata[i]) #[h , w, c]
    plt.xticks(()) #去除ticks
    plt.yticks(())
plt.show()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值