• Matplotlib——初级


    matplotlib是一个专门用来绘图的库,在分析数据的时候,使用它可以将数据进行可视化,更直观的呈现。下面是几个通过matplot绘制的图。

    通过图形的绘制,我们可以很清晰地看到数据直接的关系,并对这些关系进行分析,如果是传统的一行行数据,在我们分析时是很不直观的。

    Matplotlib图像结构

    其他说明:

    1.  一个figure(画布)可以包含多个axes(坐标系/绘图区),但是一个axes只能属于一个figure。
    2. 一个axes(坐标系/绘图区)可以包含多个axis(坐标轴),包含两个即为2d坐标系,3个即为3d坐标系 
    3.  辅助显示层为Axes(绘图区)内的除了根据数据绘制出的图像以外的内容,主要包括Axes外观(facecolor)、边框线(spines)、坐标轴(axis)、坐标轴名称(axis label)、坐标轴刻度(tick)、坐标轴刻度标签(tick label)、网格线(grid)、图例(legend)、标题(title)等内容。该层的设置可使图像显示更加直观更加容易被用户理解,但又不会对图像产生实质的影响。

    pyplot基本绘图功能介绍

     matplotlib是受MATLAB的启发构建的。MATLAB是数据绘图领域广泛使用的语言和工具。MATLAB语言是面向过程的。利用函数的调用,MATLAB中可以轻松的利用一行命令来绘制直线,然后再用一系列的函数调整结果。

     matplotlib有一套完全仿照MATLAB的函数形式的绘图接口,那就是matplotlib.pyplot。pyplot是Matplotlib的子库,它提供了和matlab类似的绘图API,方便用户快速绘制2D图表。pyplot中基本包含了matplotlib的全部功能,我们一般也是对它进行操作的。

    在使用的时候,我们可以通过下面语句进行数据的导入:

    import matplotlib.pyplot as plt

     让我们从例子中来看pyplot使用的基本操作。

    import matplotlib.pyplot as plt    # 导入模块
    
    # 1)创建画布(容器层)
    plt.figure(figsize=(10, 5))    # 10为绘图对象长度,5为宽度
    # 2)绘制折线图(图像层)
    plt.plot([1, 2, 3, 4, 5, 6 ,7], [17,17,18,15,11,11,13])
    # 3)显示图像
    plt.show()

     通过上面代码,我们创建出了下面的图像。

    创建画布

    每次我们打算绘制一个图形的时候,都需要一个画布,有的地方也称它为绘图对象。一般用plt.figure()函数来创建一个画布,比如:

    通过figsize参数,我们可以设置画布的长度和宽度,单位是英寸;通过dpi参数,我们可以指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80。上面例子中,图像的宽度为:10*80=800像素。可以看到和下面的结果是一致的。

    绘制图像

    我们通常使用plt.plot来绘制一个图像。我们绘制图像的时候是需要一个画布的,我们可以使用上面的figure来具体设置一个画布,如果不需要精确设置画布的话,我们使用plot时,Matplotlib会自动帮我们生成一个画布。

    下面是两个例子,他们设置的效果是一样的:

    plt.plot(x, y, label="$cos($x^2)", color="red", linewidth=2)
    plt.plot(x, y, "r-", label="cos($x^2)$")

     让我们通过例子了解一下这几个参数:

    (1)x、y:这两个数很容易理解,就是两个变量。我们在坐标轴上要确定一个点往往要确定两个值:横坐标值和纵坐标值。我们绘制图像的时候有很多种,有折线图和曲线图,都可以用它来设置。具体它们两个设置的区别会在后面例子中讲解。

    (2)第三个参数:在第二个例子中,我们设置了第二个参数"r-",它的意思是设置红色的实线。

    (3)label:设置图例中的内容。有时我们需要添加的是一些数据公式,我们可以在字符串前后添加“$”符号,Matplotlib就会使用它内嵌的latex引擎绘制我们写入的数学公式。在一些文本设置的时候,我们也会使用$符号,比如:r"$reall bad$"。中间的反斜杠是因为$中空格是不识别的,要加反斜杠进行转义,这样显示的英文字体会好看很多。

    (4)color:如果我们不使用第三个参数的设置,这个参数可以用来指定线条颜色。

    (5)linewidth:用于指定曲线的宽度。

    图像输出

    图像的输出有两种方式,一个是在直接显示,一个是保存成图片到本地

    (1)直接显示

    我们可以通过plt.show()函数显示图像,显示后会释放画布资源,如果在显示图像之后保存图片,将只能保存空图片。

    (2)保存图片到本地

    我们可以通过plt.savefig()函数将图像保存到指定路径,这里需要注意:如果直接显示和保存到本地都要有的话,保存到本地的操作要写到show函数前。比如:plt.savefig("D:\demo.png")。

    我们还可以通过设置dpi参数指定图像的分辨率,比如:plt.savefig("D:\demo.png", dpi=120)。

    辅助显示层

     我们通过plt.plot函数绘制完图形之后,是一个很朴素的图,所有我们通常会加入辅助显示层来让整个图像变得丰满,下面会介绍几个常用的设置。

    (1)显示图例

    如果只在plt.plot()中设置label还不能最终显示出图例,还需要通过plt.legend()将图例显示出来,比如:

    plt.legend(loc="best")

     它的其他参数设置,如下图所示:

     

    注意:如果设置为best,matplotlib会自动找一个合适的位置显示图例。

    (2)设置当前绘图区标题

    比如:plt.title("我的Matplotlib图")。

    (3)X、Y轴标题

    比如:plt.xlabel("时间")、plt.ylabel("温度")

    (4)添加网格线

    添加网格线我们使用函数:plt.grid()

    综合例子

    import matplotlib.pyplot as plt 
    import numpy as np
    
    x = np.linspace(-3, 3, 100)    # 生成-3到3范围内的100个点。
    y = x*4+1
    z = x**2
    
    plt.figure(figsize=(8,4))
    plt.plot(x, y, label="$x*2+1$", color="red", linewidth=2)
    plt.plot(x, z, "b--", label="$X^2$")
    plt.plot([1, 2, 3, 4, 5, 6 ,7], [7,7,8,5,0.3,1,0.3], "k:", label="折线图")
    plt.grid()
    plt.legend(loc="best")
    plt.show()

     运行之后显示的图像如下:

     Matplotlib三层架构总结

    • 容器层
      • 画板 Canvas
      • 画布 Figure
      • 绘制图形区 Axes
        • X轴
        • Y轴
    • 辅助显示层
      • 网格
      • 刻度
      • 刻度说明
      • 图例说明
      • 。。。
    • 图像层
      • 折线图
      • 散点图
      • 柱状图
      • 饼图
      • 直方图

     

  • 相关阅读:
    Unity The Method Signature Matching Rule
    Unity The Property Matching Rule
    Unity The Type Matching Rule
    Unity The Custom Attribute Matching Rule
    Unity The Member Name Matching Rule
    Unity No Policies
    Unity The Return Type Matching Rule
    Unity The Parameter Type Matching Rule
    Unity The Namespace Matching Rule
    关于TSQL递归查询的(转)
  • 原文地址:https://www.cnblogs.com/kuxingseng95/p/10007785.html
Copyright © 2020-2023  润新知