教你快速上手Pyplot,画出各种你想要的图

学习目录

  • 一、Pyplot简介
  • 二、Pyplot导入
  • 三、Pyplot绘图
  • 一、Pyplot简介

  • Pyplot 是 Matplotlib 的子库,提供了和 MATLAB 类似的绘图 API。

  • Pyplot 是常用的绘图模块,能很方便让用户绘制 2D 图表。

  • Pyplot 包含一系列绘图函数的相关函数,每个函数会对当前的图像进行一些修改,例如:给图像加上标记,生成新的图像,在图像中产生新的绘图区域等等。

  • 二、Pyplot导入

    我们可以使用 import 导入 pyplot 库,并设置一个别名 plt:

    from matplotlib import pyplot as plt
    

    这样我们就可以使用 plt 来引用 pyplot 包的方法。

    三、Pyplot绘图

    ✈️1、折线图

    from matplotlib import pyplot as plt
    import numpy as np
    
    xpoints=np.array([0,10])
    ypoints=np.array([0,100])
    plt.plot(xpoints,ypoints)
    plt.show()
    

    我们通过两个点(0,0)和(10,100)绘制出折线图,x轴的点坐标就是0和10,y轴的点坐标就是0,100。分别将x轴的点和y轴的点存放到数组中,再调用plot画在画布上,最后show显示出来就搞定了。

    🚄2、熟悉plot()函数

    plot() 用于画图它可以绘制点和线,语法格式如下:

    #画单条线
    plot([x], y, [fmt], *, data=None, **kwargs)
    #画多条线
    plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)
    
  • x, y:点或线的节点,x 为 x 轴数据,y 为 y 轴数据,数据可以列表或数组。
  • fmt:可选,定义基本格式(如颜色、标记和线条样式)。
  • **kwargs:可选,用在二维平面图上,设置指定属性,如标签,线的宽度等。
  • 颜色字符:‘b’ 蓝色,‘m’ 洋红色,‘g’ 绿色,‘y’ 黄色,‘r’ 红色,‘k’ 黑色,‘w’ 白色,‘c’ 青绿色,’#008000’ RGB 颜色符串。多条曲线不指定颜色时,会自动选择不同颜色。

    线条样式:’‐’ 实线,’‐‐’ 破折线,’‐.’ 点划线,’:’ 虚线。

    标记字符:’.’ 点标记,’,’ 像素标记(极小点),‘o’ 实心圈标记,‘v’ 倒三角标记,’^’ 上三角标记,’>’ 右三角标记,’<’ 左三角标记 等等。

    纸上得来终觉浅,绝知此事要躬行,大家看下面几个实例就明白了。

    我们可以绘制任意数量的点,只需确保两个轴上的点数相同即可。绘制一条不规则线,坐标为 (1, 3) 、 (2, 8) 、(6, 1) 、(8, 10),对应的两个数组为:[1, 2, 6, 8] 与 [3, 8, 1, 10]。

    我们给线条变成红色,并且线条样式为虚线,再让每个点都被‘o’符号标记:

    from matplotlib import pyplot as plt
    import numpy as np
    
    xpoints=np.array([1, 2, 6, 8])
    ypoints=np.array([3, 8, 1, 10])
    plt.plot(xpoints,ypoints,'r--o')
    plt.show()
    

    可以看到plot中多了个参数'r--o',它其实就是刚刚的[fmt],分别代表了颜色字符r,线条样式–,标记字符o,这三者的顺序随意,个数随意,非常方便。

    这里参数改成了'.g-.',可以得知引号中第一个参数是符号标记‘.’ ; 第二个是颜色字符g ; 第三个是线条样式-. 。这样就变成了绿色的点划线,并且点都被标记出来了。

    plt.plot(xpoints,ypoints,'.g-.')
    


    如果我们不指定 x 轴上的点,则 x 会根据 y 的值来设置为 0, 1, 2, 3…N-1。

    from matplotlib import pyplot as plt
    import numpy as np
    
    ypoints=np.array([2, 6, 2, 6,2])
    plt.plot(ypoints,'.c:')
    plt.show()
    

    从下图可以看出 x 的值默认设置为 [0, 1, 2, 3, 4]。

    🚉 3、轴标签和标题

    我们可以使用 xlabel() 和 ylabel() 方法来设置 x 轴和 y 轴的标签。

    from matplotlib import pyplot as plt
    import numpy as np
    
    xpoints=np.array([1,2,3,4,5])
    ypoints=np.array([5,3,8,5,9])
    plt.plot(ypoints,'oc-')
    plt.xlabel('x-label')
    plt.ylabel('y-label')
    plt.show()
    


    我们可以使用 title() 方法来设置标题。

    from matplotlib import pyplot as plt
    import numpy as np
    
    xpoints=np.array([1,2,3,4,5])
    ypoints=np.array([5,3,8,5,9])
    plt.plot(ypoints,'oc-')
    plt.title('picture')
    plt.xlabel('x-label')
    plt.ylabel('y-label')
    plt.show()
    


    如果我们想使用中文显示标题和标签,只需要加入一行plt.rcParams['font.family']=['STFangsong'],这样就可以使用系统字体中的“仿宋”。

    from matplotlib import pyplot as plt
    import numpy as np
    
    plt.rcParams['font.family']=['STFangsong']
    xpoints=np.array([1,2,3,4,5])
    ypoints=np.array([5,3,8,5,9])
    plt.plot(ypoints,'oc-')
    plt.title('折线图')
    plt.xlabel('博客写作时长')
    plt.ylabel('涨粉数')
    plt.show()
    


    此外我们还可以自定义字体的样式:

    from matplotlib import pyplot as plt
    import numpy as np
    
    plt.rcParams['font.family']=['STFangsong']
    xpoints=np.array([1,2,3,4,5])
    ypoints=np.array([5,3,8,5,9])
    plt.plot(ypoints,'oc-')
    plt.title('折线图',size='30',color='#ABCDEF')
    plt.xlabel('数量',size='15',color='blue')
    plt.ylabel('价格',size='20',color='m')
    plt.show()
    

    用size设置字体大小;color设置字体颜色,可以缩写,可以完整写,也可以用rgb十六进制写。

    最后,我们可以修改标题与标签的定位:

    from matplotlib import pyplot as plt
    import numpy as np
    
    plt.rcParams['font.family']=['STFangsong']
    xpoints=np.array([1,2,3,4,5])
    ypoints=np.array([5,3,8,5,9])
    plt.plot(ypoints,'oc-')
    plt.title('折线图',loc='right',size='30',color='#409882')
    plt.xlabel('数量',loc='left',size='15',color='blue')
    plt.ylabel('价格',loc='top',size='20',color='m')
    plt.show()
    
  • title() 方法提供了 loc 参数来设置标题显示的位置,可以设置为: ‘left’, ‘right’, 和 ‘center’, 默认值为 ‘center’。

  • xlabel() 方法提供了 loc 参数来设置 x 轴显示的位置,可以设置为: ‘left’, ‘right’, 和 ‘center’, 默认值为 ‘center’。

  • ylabel() 方法提供了 loc 参数来设置 y 轴显示的位置,可以设置为: ‘bottom’, ‘top’, 和 ‘center’, 默认值为 ‘center’。


  • 🚀 4、绘制多图

    我们可以使用 pyplot 中的 subplot() 和 subplots() 方法来绘制多个子图。

    subplot() 方法在绘图时需要指定位置,subplots() 方法可以一次生成多个,在调用时只需要调用生成对象的 ax 即可。推荐大家使用subplot即可。

    我们看下subplot函数的语法格式:subplot(nrows, ncols, index)

    subplot( )将整个绘图区域分成 nrows 行和 ncols 列,然后从左到右,从上到下的顺序对每个子区域进行编号 1…N ,左上的子区域的编号为 1、右下的区域编号为 N,编号可以通过参数 index 来设置。

    from matplotlib import pyplot as plt
    import numpy as np
    #plot1
    xpoints=np.array([0,2,4,6,8])
    ypoints=np.array([0,3,6,9,12])
    plt.subplot(1,2,1)
    plt.plot(xpoints,ypoints)
    plt.xlabel('x')
    plt.ylabel('y')
    plt.title('plot1')
    
    #plot2
    x=np.array([1,3,5,8])
    y=np.array([10,3,6,2])
    plt.subplot(1,2,2)
    plt.plot(x,y)
    plt.title('plot2',color='m')
    plt.show()
    

    可以看到plot1和plot2在用plot前都加上了plt.subplot(1,2,1)plt.subplot(1,2,2),意思是说将画布分为一行两列,左边标号是1,右边标号是2,所以plot1就在左图位置,plot2就画在右图位置。就这么简单。

    如果我们只在第一块区域画图,将plot2代码删去,运行一下。

    from matplotlib import pyplot as plt
    import numpy as np
    #plot1
    xpoints=np.array([0,2,4,6,8])
    ypoints=np.array([0,3,6,9,12])
    plt.subplot(1,2,1)
    plt.plot(xpoints,ypoints)
    plt.xlabel('x')
    plt.ylabel('y')
    plt.title('plot1')
    plt.show()
    

    可以看到只有plot1在画布的左侧,右侧没有图像,所以显示为空。

    🚤5、绘制散点图

    我们可以使用 pyplot 中的 scatter() 方法来绘制散点图。scatter() 方法语法格式如下:

    matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, *, edgecolors=None, plotnonfinite=False, data=None, **kwargs)
    

    🎉参数说明

    x,y:长度相同的数组,也就是我们即将绘制散点图的数据点,输入数据。

    s:点的大小,默认 20,也可以是个数组,数组每个参数为对应点的大小。

    c:点的颜色,默认蓝色 ‘b’,也可以是个 RGB 或 RGBA 二维行数组。

    marker:点的样式,默认小圆圈 ‘o’。

    cmap:Colormap,默认 None,标量或者是一个 colormap 的名字,只有 c 是一个浮点数数组的时才使用。如果没有申明就是 image.cmap。

    norm:Normalize,默认 None,数据亮度在 0-1 之间,只有 c 是一个浮点数的数组的时才使用。

    vmin,vmax:亮度设置,在 norm 参数存在时会忽略。

    alpha:透明度设置,0-1 之间,默认 None,即不透明。

    linewidths:标记点的长度。

    其实上面这些参数不需要全部记住,常用的大小颜色记住即可,收藏之后,忘记了随时来看。


    我们在画布上绘制下这8个点:

    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
    y = np.array([1, 4, 9, 16, 7, 11, 23, 18])
    
    plt.scatter(x, y)
    plt.show()
    

    我们看下效果图:

    我们来设置散点的大小:

    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
    y = np.array([1, 4, 9, 16, 7, 11, 23, 18])
    sizes = np.array([20,50,100,200,500,1000,200,100])
    plt.scatter(x, y,sizes=sizes)
    plt.show()
    

    通过定义一个sizes数组,数组元素就是每个点的大小:

    我们还可以自定义点的颜色:

    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
    y = np.array([1, 4, 9, 16, 7, 11, 23, 18])
    sizes = np.array([20,50,100,200,500,1000,200,100])
    colors = np.array(["red","green","black","orange","purple","beige","cyan","magenta"])
    plt.scatter(x, y,sizes=sizes,c=colors)
    plt.show()
    

    colors是颜色数组,存储了每个点的颜色:

    Matplotlib 模块提供了很多可用的颜色条。颜色条就像一个颜色列表,其中每种颜色都有一个范围从 0 到 100 的值。

    import matplotlib.pyplot as plt
    import numpy as np
    
    x = np.array([1, 2, 3, 4, 5, 6, 7, 8])
    y = np.array([1, 4, 9, 16, 7, 11, 23, 18])
    sizes = np.array([20,50,100,200,500,1000,200,100])
    colors = np.array([10, 20, 30, 40, 50, 60, 70, 80])
    plt.scatter(x, y,sizes=sizes,c=colors,cmap='viridis')
    plt.colorbar()
    plt.show()
    

    设置颜色条需要使用 cmap 参数,默认值为 ‘viridis’,之后颜色值设置为 0 到 100 的数组。如果要显示颜色条,需要使用 plt.colorbar() 方法:


    以上就是所有pyplot的基本用法了,三连不迷路。

    让别人相信你有搞定事情的毅力以及态度,做不出来绝不放弃,态度决定一切。

    物联沃分享整理
    物联沃-IOTWORD物联网 » 教你快速上手Pyplot,画出各种你想要的图

    发表评论