精华内容
下载资源
问答
  • 这些教程涵盖了使用 Matplotlib 创建可视化的基础知识,以及有效使用的一些最佳实践。Matplotlib 有大量的代码库,可能会让许多新用户却步,然而 Matplotlib 的大部分内容只需要一个相当简单的概念框架和一些重要...

    这些教程涵盖了使用 Matplotlib 创建可视化的基础知识,以及有效使用包的一些最佳实践。

    Matplotlib 有大量的代码库,可能会让许多新用户却步,然而 Matplotlib 的大部分内容只需要一个相当简单的概念框架和一些重要的知识点就可以理解。

    绘图需要在一定范围的层次上进行操作,从最一般的层次(contour this 2-D array )到最具体的层次(color this screen pixel red )。绘图包的目的是通过所有必要的控制。即:大部分时间使用相对高级的命令,并且在需要时仍然能使用低级命令—帮助尽可能容易地完成可视化数据。

    因此 Matplotlib 中的所有内容都被组织在一个层次结构中,位于层次结构顶部的是 Matplotlib “状态机环境”,由 Matplotlib.pyplot 模块提供。在这个级别上使用简单的函数向当前图形的当前轴添加绘图元素(线条、图像、文本等)。

    Pyplot 的状态机环境的行为类似于 MATLAB,对于具有 MATLAB 经验的用户来说应该是最熟悉的。

    层次结构的下一个级别是面向对象接口的第一个级别,其中 pyplot 仅用于图形创建等少数函数,用户显示创建并跟踪图形和轴对象。在这个级别上用户使用 pyplot 创建图形,并通过这些图形创建一个或多个轴对象,然后这些轴对象用于大多数绘图操作。

    Parts of a Figure(图中的部件):

    f2Azye.png

    Figure(图):

    完整的一个图。该图保留追踪到的所有子 轴域 、一些 Matplotlib 中特有的 Artist(艺术家对象。如:标题,角色说明等)和 canvas 。(不要过于担心 canvas ,这一点非常重要,虽然实际上是这个对象绘制出了你的图,但是作为用户来说或多或少是不可见的)。一个图形可以有任意数量的 轴域 ,但为了有用,至少应该有一个 轴域 。

    创建一个新图形最简单的方法是用 pyplot:

    importmatplotlib.pyplot asplt;

    fig = plt.figure() # an empty figure with no axes

    fig.suptitle(\'No axes on this figure\') # Add a title so we know which it is

    fig, ax_lst = plt.subplots(2, 2) # a figure with a 2x2 grid of Axes

    plt.show();

    NrMjIb.png

    Axes(轴域):

    所谓的“图”,它的区域是图像和数据的 作用域。一个给定的图形可以包含多个轴域,但是一个给定的轴域对象只能在一个图中。轴域包含两个(或三个 3D 情况下)轴线对象(注意:Axes(轴域)金额 Axis(轴线)之间的区别),它们(指轴域)负责数据范围(数据范围也可以通过 set_xlim() 和 set_ylim() 轴域方法进行控制)。每个轴域都有一个标题(通过 set_title() 设置)、一个 x-label (通过 set_xlabel() 设置)和 y-label 通过 set_ylabel() 设置。Axes 类及其成员函数是使用 OO 接口的主要接口点。

    Axis(轴线):

    它们类似 number-line-like 对象。负责设置图形限制并生成刻度(轴线上的标记)和ticklael(刻度标签)。刻度的位置由 Locator 对象确定,刻度标签的线的格式由 Formatter 对象设置。正确的 Locator 和 Formatter 程序组合可以很好地控制刻度位置和标签。

    Artist(艺术家):

    基本上,在图形上看到的所有东西都是艺术家(Artistd 对象)(甚至包括 Figure,Axes,Axis 对象等)。这包括 Text(文本)对象,Line2D 对象, collection(集合) 对象,Patch(修补)对象等等(你懂的)。当图形绘制时,所有的 Artist(艺术家)被画到 Canvas(画布)上。大多数 Artist(艺术家)都绑定在一个 Axes(轴域)对象上,这样的 Artist(艺术家)不能被多个 Axes(轴域)对象共享,也不能从一个 Axes(轴域)对象移动到另一个 Axes(轴域)对象上。

    plotting (绘图)函数所支持的数据类型:

    所有 plotting 函数都支持 np.array 或 np.ma.masked_array 数据。array-like 形式的对象和

    pandas 数据类有可能支持。最好在图像绘制前将数据对象转换为 np.array 对象。

    Matplotlib、pyplot 和 pylab 之间的关系:

    Matplotlib 是整个包;Matplotlib.pyplot 是 Matplotlib 中的一个模块;pylab 是与 Matplotlib 一起安装的模块。

    Pyplot 为底层 绘图库对象 提供 state-machine 接口。state-machine 会自动和以用户无感的方式创建 Figures(图)对象 和 axes (轴域),以实现所需的绘图操作。例如:

    importmatplotlib.pyplot asplt;

    importnumpy asnp;

    x = np.linspace(0, 2, 100);

    plt.plot(x, x, label = \'linear\');

    plt.plot(x, x**2, label = \'quadratic\');

    plt.plot(x, x**3, label = \'cubic\');

    plt.xlabel(\'X 标注\');

    plt.ylabel(\'Y 标注\');

    plt.title(\'标题\');

    plt.legend();

    plt.show();

    qemyiy.png

    对 plt.plot() 的第一个调用将自动创建 Figure 和 Axes 对象,以实现所需的绘图。对 plt.plot() 后续的调用会重复使用当前 Axes 对象,并每次添加一行。设置 title 标题、legend 图例等,都会使用当前 Axes 对象,设置相应的 Artist(艺术家)。

    Pylab 是一个便捷的模块,它在一个命名空间中被批量导入 Matplotlib.pyplot(用于绘图)和 Numpy(用于数学和数组)。Pylab 是不推荐使用的,并且由于命名空间污染强烈禁止使用它。请使用 pyplot 替代。

    对于 non-interactive(非交互式)绘图,建议使用 pyplot 创建图形,然后使用 OO 接口进行绘图。

    Coding Styles (编码风格)

    在查看此文档和示例时,您将发现不同的编码风格和使用模式。这些风格是完全有效的,并有它们的优点和缺点。几乎所有的例子都可以转换成另一种风格,并得到相同的结果。唯一需要注意的是要避免为自己的代码混合编码风格。

    注意

    Matplotlib 的开发人员必须遵循特定的风格和指导方针。参见Matplotlib 开发者指南。

    在不同的风格中,有两种是官方支持的。因此这些是使用 Matplotlib 的首选方法。

    对于 pyplot 风格,脚本导入通常是:

    import matplotlib.pyplot as plt

    import numpy as np

    然后调用,例如,np.arange、np.zeros、np.pi、plt.figure、plt.plot、plt.show 等等。使用 pyplot 接口创建图形,然后使用 object 方法创建其余的图形:

    x = np.arange(0, 10, 0.2)

    y = np.sin(x)

    fig, ax = plt.subplots()

    ax.plot(x, y)

    plt.show()

    rIvMri.png

    那么,在例子中为什么不使用 Matlab 风格(它依赖于全局变量和浅的命名空间)而使用另外的方式?对于像这个例子非常简单,仅用在学术(学习)上;用复杂的风格编程,会更清楚的知道程序执行的来龙去脉和发生了什么。对复杂程序来说,这种明确性和清晰性会越来越重要,更丰富和更完整的面向对象接口可能会使程序更容易编写和维护。

    很多情况下,会发现自己一遍又一遍地绘制相同的图表,但使用的数据集不同,这导致需要编写专门的函数来绘制图表。 函数如下:

    importmatplotlib.pyplot asplt;

    importnumpy asnp;

    defmy_plotter(ax, data1, data2, param_dict):

    \"\"\"

    A helper function to make a graph

    Parameters

    ----------

    ax : Axes

    The axes to draw to

    data1 : array

    The x data

    data2 : array

    The y data

    param_dict : dict

    Dictionary of kwargs to pass to ax.plot

    Returns

    -------

    out : list

    list of artists added

    \"\"\"

    out = ax.plot(data1, data2, **param_dict)

    returnout

    # which you would then use as:

    data1, data2, data3, data4 = np.random.randn(4, 100)

    fig, ax = plt.subplots(1, 1)

    my_plotter(ax, data1, data2, {\'marker\': \'x\'})

    plt.show()

    J3myi2.png

    如果想同时生成两个图:

    fig, (ax1, ax2) = plt.subplots(1, 2)

    my_plotter(ax1, data1, data2, {\'marker\': \'x\'})

    my_plotter(ax2, data3, data4, {\'marker\': \'o\'})

    Eb6fI3.png

    当然,对于这个例子来说,这样的编程风格麻烦了,但是一旦图表变得稍微复杂一些,风格说带来的回报就体现出来了。

    Backends(后端)

    什么是后端?

    网站和邮件列表中的许多文档都提到了“Backends(后端)”,许多新用户对这个术语感到困惑。Matplotlib 针对许多不同的案例和输出格式。有些从 python shell 交互式地使用 Matplotlib 当输入命令时,会弹出绘图窗口。有些运行 Jupyter 笔记本并绘制内联图以便快速进行数据分析。还有些将 Matplotlib 嵌入到图形界面中,比如 wxpython 或 pygtk,以构建富应用程序。也可以批处理脚本中使用 Matplotlib 从数据模拟中生成 postscript 图像,更可以运行 web 应用服务器来动态提供图形。

    为了支持所有案例,Matplotlib 可以针对不同的输出,这些功能中的每一个都称为后端(也就是 Matplotlib 开发者的代码),反之“前端”是面向用户的代码,即:绘图代码,而“后端”完成所有在幕后制作图形的工作。有两种类型的后端:用户界面后端(用于 pygtk、wxpython、tkinter、qt4 或 macosx;也称“交互式后端”)和用于生成图像文件的硬拷贝后端(PNG、SVG、PDF、PS;也称为“非交互式后端”)。

    有四种配置后端的方法。如果它们彼此冲突,可以使用下面列表中最后提到的方法,例如调用 use() 将覆盖 Matplotlibrc 中的配置。

    backend : WXAgg # use wxpython with antigrain (agg) rendering

    2:为当前 shell 或单个脚本设置 MPLBACKEND环境变量。 在 Unix 上:

    export MPLBACKEND=module://my_backend

    python simple_plot.py

    MPLBACKEND=\"module://my_backend\" python simple_plot.py

    在 Windows 上,只有样例可以:

    set MPLBACKEND=module://my_backend

    python simple_plot.py

    设置这个环境变量将覆盖任何 Matplotlibrc 中的后端参数,即使当前工作目录中有 Matplotlibrc。因此在全局设置 MPLBACKEND,例如在 .bashrc 和 .profile,可能会导致与预期相反的结果,所以不推荐使用。

    3:如果脚本依赖于特定的后端,可以使用 use() 函数:

    import matplotlib matplotlib.use(\'PS\') # generate postscript output by default

    如果使用 use() 函数,则必须在导入 matplotlib.pyplot 之前完成。在引入 pyplot 之后调用 use() 将不起作用。如果用户希望使用不同的后端,那么使用 use() 将需要对代码进行更改。所以除非绝对必要,因此应该避免显示调用 use()。

    注意:

    后端名称规范不区分大小写; 例如,\"GTK3Agg\"和\"gtk3agg\"是等效的。

    展开全文
  • pip install --user matplotlib 测试I一下 有一段空白 没有报错 安装完成 安装web应用的request 以及web的框架 pip install --user virtualenv pip install Django           ...

     

     

     

     

     

     由于python主要应用在Linux下和相关的vc下,对于熟悉eclipse的我来说,这是一个难题,通过在命令行中转pip可以安装python任何信息,具体的插件直接在一下网页中搜索https://pypi.python.org/pypi/pip

    选中下面

    下载完成之后解压:

    在命令行中打开

    python setup.py install

    配置环境变量

    把python目录下的 scripts环境变量添加进去

    然后在命令行中输入 pip --version

    通过pip 安装matplotlib

    pip install --user matplotlib

    测试I一下

    有一段空白 没有报错 安装完成

    安装web应用的request

    以及web的框架

    pip install --user virtualenv

    pip install Django

     

     

     

     

     

    eclipse中配置完成  各种插件可以通过pip安装到python之后再引入eclipse中

     

    转载于:https://www.cnblogs.com/youran-he/p/8033208.html

    展开全文
  • 1、matplotlibmatplotlib是numpy的扩展,可以实现python框架下的可视化,类似MATLAB的图像可视化。2、基本操作2.1绘画直方图#matplotlib使用 import matplotlib.pyplot as plt from numpy.random import normal,...

    1、matplotlib

    matplotlib是numpy的扩展,可以实现python框架下的可视化,类似MATLAB的图像可视化。
    在这里插入图片描述

    2、基本操作

    直方图、散点图、3D图、折线图、热力图、bar图。

    2.1绘画直方图

    #matplotlib使用
    import matplotlib.pyplot as plt
    from numpy.random import normal,rand
    x = normal(size=200)
    plt.hist(x,bins=30)
    plt.show()
    

    效果:
    在这里插入图片描述
    2.2散点图

    #2、散点图
    import matplotlib.pyplot as plt
    from numpy.random import rand
    a = rand(100)
    b = rand(100)
    plt.scatter(a,b)
    plt.show()
    
    

    效果:
    在这里插入图片描述
    其他散点图:

    class Plot(object):
    	def __init__(self, ref, pred):
    		self.ref = ref
    		self.pred = pred
        def plot(self):
            '''
            绘制预测类别分布图以及真实类别分布图
            输入:真实样本标签self.ref;实际结果标签self.pred
            输出:
            '''
    #         font = {'family' : 'normal',
    # #         'weight' : 'bold',
    #         'size'   : 18}
    #         matplotlib.rc('font', **font)
            #1.绘制真实标签分布
            fig1 = plt.figure('True_fig', figsize = (16,12))
            fig1.suptitle('True Label Distribution',fontsize = 20)
            ax1 = fig1.add_subplot(1,1,1)
            minorLocator = MultipleLocator(base = 413)
            ax1.scatter(x = np.arange(len(self.ref)), y = self.ref, c = 'red', marker = 'o',
                        linewidths = 0.01,
                        )#color = 'red', marker = 'o', markersize = 1,
            ticks1 = ax1.set_yticks(list(np.arange(22)))
            #也可以将其他值用作标签
            labels1 = ax1.set_yticklabels(['Normal','Fault 1', 'Fault 2','Fault 3','Fault 4','Fault 5','Fault 6','Fault 7','Fault 8', 'Fault 9', 
                                           'Fault 10', 'Fault 11', 'Fault 12', 'Fault 13', 'Fault 14', 'Fault 15', 'Fault 16', 'Fault 17', 
                                           'Fault 18', 'Fault 19', 'Fault 20', 'Fault 21'], 
                                          rotation=0, fontsize='small')
            # Set minor tick locations.
            ax1.yaxis.set_minor_locator(MultipleLocator(1))
            ax1.xaxis.set_minor_locator(minorLocator)
            yticks = FormatStrFormatter('')
            ax1.set_xlabel("sample NO.")
            ax1.set_ylabel("Label")
            # Set grid to use minor tick locations. 
            ax1.grid(which = 'minor')        
            extraticks = [9086]
            plt.xticks(list(plt.xticks()[0]) + extraticks)
            ax1.set_xlim(xmin = -100, xmax = 9200)
    #         ax1.legend(loc = 'best')        
    #         ax1.xaxis.set_tick_params(pad=2)
    
            for item in ([ax1.title, ax1.xaxis.label, ax1.yaxis.label]):
                item.set_fontsize(20)
            for item in (ax1.get_xticklabels()+ax1.get_yticklabels()):
                item.set_fontsize(14)   
            #+ )
            fig1.tight_layout(rect=[0, 0.03, 1, 0.95])
    

    现在用的:

     #1.绘制真实标签分布
      fig1 = plt.figure('True_fig', figsize = (16,12))
      fig1.suptitle('True Label Distribution',fontsize = 20)
      ax1 = fig1.add_subplot(1,1,1)
      minorLocator = MultipleLocator(base = num)
      ax1.scatter(x = np.arange(len(self.ref)), y = self.ref, c = 'red', marker = 'o',
                  linewidths = 0.01,
                  )#color = 'red', marker = 'o', markersize = 1,
      ticks1 = ax1.set_yticks(list(np.arange(22)))
      #也可以将其他值用作标签
      labels1 = ax1.set_yticklabels(['Normal','Fault 1', 'Fault 2','Fault 3','Fault 4','Fault 5','Fault 6','Fault 7','Fault 8', 'Fault 9', 
                                     'Fault 10', 'Fault 11', 'Fault 12', 'Fault 13', 'Fault 14', 'Fault 15', 'Fault 16', 'Fault 17', 
                                     'Fault 18', 'Fault 19', 'Fault 20', 'Fault 21'], 
                                    rotation=0, fontsize='small')
      # Set minor tick locations.
      ax1.yaxis.set_minor_locator(MultipleLocator(1))
      ax1.xaxis.set_minor_locator(minorLocator)
      yticks = FormatStrFormatter('')
      ax1.set_xlabel("sample NO.")
      ax1.set_ylabel("Label")
      # Set grid to use minor tick locations. 
      ax1.grid(which = 'minor')        
      extraticks = [length]
      plt.xticks(list(plt.xticks()[0]) + extraticks)
      ax1.set_xlim(xmin = xminValue, xmax = xmaxValue )
    #         ax1.legend(loc = 'best')        
    #         ax1.xaxis.set_tick_params(pad=2)
    
      for item in ([ax1.title, ax1.xaxis.label, ax1.yaxis.label]):
          item.set_fontsize(20)
      for item in (ax1.get_xticklabels()+ax1.get_yticklabels()):
          item.set_fontsize(14)   
      #+ )
      #tight_layout() only considers ticklabels, axis labels, and titles. 
      fig1.tight_layout(rect=[0, 0.03, 1, 0.95])
    #         plt.savefig(picDir + "trueLabel{}.pdf".format(self.picName))
      if self.save:
          plt.savefig(picDir + "trueLabel{}.png".format(picName), dpi = (300))
    

    2.3 3D图绘制

    #3、3D图
    from matplotlib import cm
    from mpl_toolkits.mplot3d import Axes3D
    import matplotlib.pyplot as plt
    import numpy as np
    fig = plt.figure()
    ax = fig.gca(projection='3d')
    X = np.arange(-5, 5, 0.25)
    Y = np.arange(-5, 5, 0.25)
    X, Y = np.meshgrid(X, Y)
    R = np.sqrt(X**2 + Y**2)
    Z = np.sin(R)
    surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm)
    plt.show()
    
    

    效果:
    在这里插入图片描述
    scatter 的3D图:

    # This import registers the 3D projection, but is otherwise unused.
    from mpl_toolkits.mplot3d import Axes3D  # noqa: F401 unused import
    
    import matplotlib.pyplot as plt
    import numpy as np
    
    # Fixing random state for reproducibility
    np.random.seed(19680801)
    
    
    def randrange(n, vmin, vmax):
        '''
        Helper function to make an array of random numbers having shape (n, )
        with each number distributed Uniform(vmin, vmax).
        '''
        return (vmax - vmin)*np.random.rand(n) + vmin
    
    fig = plt.figure()
    ax = fig.add_subplot(111, projection='3d')
    
    n = 100
    
    # For each set of style and range settings, plot n random points in the box
    # defined by x in [23, 32], y in [0, 100], z in [zlow, zhigh].
    for m, zlow, zhigh in [('o', -50, -25), ('^', -30, -5)]:
        xs = randrange(n, 23, 32)
        ys = randrange(n, 0, 100)
        zs = randrange(n, zlow, zhigh)
        ax.scatter(xs, ys, zs, marker=m)
    
    ax.set_xlabel('X Label')
    ax.set_ylabel('Y Label')
    ax.set_zlabel('Z Label')
    
    plt.show()
    

    在这里插入图片描述

    2.4 绘制折线图、散点图
    以accuracy变化为例。

    def plotAccuracy(trainAccList, testAccList):
        '''
        绘制精度图,原文:https://blog.csdn.net/tsq292978891/article/details/79862887 
        '''
        plt.figure(figsize=(25,16))
        plt.grid(linestyle = "--")      #设置背景网格线为虚线
        ax = plt.gca()
        #ax.spines['top'].set_visible(False)  #去掉上边框
        #ax.spines['right'].set_visible(False) #去掉右边框
    
    #     xgroup_labels=['100%','80%','60%','40%','20%','0%'] #x轴刻度的标识
    #     ygroup_labels=['0.0','0.1','0.2','0.3','0.4','0.5','0.6','0.7','0.8','0.9','1.0'] #y轴刻度的标识
    
    #     plt.xticks(x,xgroup_labels[::-1],fontsize=18,fontweight='bold') #默认字体大小为10
    #     plt.yticks(y,ygroup_labels,fontsize=18,fontweight='bold')
        # axis 0 and axis 1 Font
                
        # 先画折现图
        # [::-1]
        plt.plot(20*np.arange(len(trainAccList)), np.array(trainAccList), label="Train Accuracy",linewidth=4)
        plt.plot(20*np.arange(len(testAccList)), np.array(testAccList), label="Test Accuracy",linewidth=4)
    
        # 再画散点图
        plt.scatter(20*np.arange(len(trainAccList)), np.array(trainAccList),c = 'red',s=300,marker = '.')
        plt.scatter(20*np.arange(len(testAccList)), np.array(testAccList), c = 'green',s=300,marker = '.')
    
        plt.title("Accuracy",fontsize=20,fontweight='bold')    #默认字体大小为12
        plt.xlabel("Step",fontsize=20,fontweight='bold')
        plt.ylabel("Accuracy",fontsize=20,fontweight='bold')
    #     plt.xlim(0.0,1.0)         #设置x轴的范围
        plt.ylim(0.0,1.0)
    
        plt.legend()          #显示各曲线的图例
        plt.legend(loc=3,numpoints=1)
        leg = plt.gca().get_legend()
        ltext = leg.get_texts()
        plt.setp(ltext,fontsize=22,fontweight='bold') #设置图例字体的大小和粗细
        
        for item in ([ax.title, ax.xaxis.label, ax.yaxis.label]):
            item.set_fontsize(20)
        for item in (ax.get_xticklabels()+ax.get_yticklabels()):
            item.set_fontsize(18)   
        plt.show()
    
    

    在这里插入图片描述

    添加竖线:

    import matplotlib.pyplot as plt
    import numpy as np 
    
    def plotLoss(loss, step = 3, length = 25, height = 16):
        '''input: np.array
        output: two stage loss'''
    
        plt.figure(figsize=(length, height))
        plt.grid(linestyle = "--")      #设置背景网格线为虚线
        ax = plt.gca()
                
        # 先画折现图
        # [::-1]
        plt.plot(np.arange(len(loss)), np.array(loss), 
                 label="loss",linewidth=4)
    
        # 再画散点图
        plt.scatter(np.arange(len(loss)), np.array(loss),c = 'red',s=300,marker = '.')
    
        plt.title("loss",fontsize=20,fontweight='bold')    #默认字体大小为12
        plt.xlabel("Step",fontsize=20,fontweight='bold')
        plt.ylabel("loss",fontsize=20,fontweight='bold')
        
        y_min = 0.0
        y_max = max(loss)*1.05
    #     plt.xlim(0.0,1.0)         #设置x轴的范围
        plt.ylim(y_min, y_max)
        
        # 竖线分割两个阶段
        plt.vlines(step, y_min, y_max, colors = "c", linestyles = "dashed")
        
        plt.legend()          #显示各曲线的图例
        plt.legend(loc=3,numpoints=1)
        leg = plt.gca().get_legend()
        ltext = leg.get_texts()
        plt.setp(ltext,fontsize=22,fontweight='bold') #设置图例字体的大小和粗细
        
        for item in (ax.get_xticklabels()+ax.get_yticklabels()):
            item.set_fontsize(18)   
        plt.show()
        plt.close()
    if __name__ == "__main__":
        loss = np.array([3, 2, 1 , 0.4, 0.2])
        plotLoss(loss, length = 10, height = 8)
    

    效果:
    在这里插入图片描述

    import matplotlib.pyplot as plt
    line = plt.plot([1,2,3], [1,2,3], 'go-', label='line 1', 
    linewidth=2)
    plt.legend(line)
    plt.show()
    

    在这里插入图片描述
    marker 有:
    在这里插入图片描述

    2.5 数值用图表示imshow

    def showArray(P, cmap = 'viridis'):
        '''
        show matrix with picture, and if the cmap is belongs to diverging colormaps,
        set midvalue as the center color.
        '''
        # The normal figure
        # Limits for the extent
        x_start = 0.0
        x_end = 1.0
        y_start = 0.0
        y_end = 1.0
        
        extent = [x_start, x_end, y_start, y_end]
        fig = plt.figure(figsize=(16, 12))
        ax = fig.add_subplot(111)
        im = ax.imshow(P, extent=extent, interpolation='None', cmap=cmap)
        fig.colorbar(im)
        
        # Add the text
        size = int(len(P))
        jump_x = (x_end - x_start) / (2.0 * size)
        jump_y = (y_end - y_start) / (2.0 * size)
        x_positions = np.linspace(start=x_start, stop=x_end, num=size, endpoint=False)
        y_positions = np.linspace(start=y_start, stop=y_end, num=size, endpoint=False)
        
        for y_index, y in enumerate(y_positions):
            for x_index, x in enumerate(x_positions):
                label = round(P[len(y_positions) - 1 - y_index, x_index], 2)
                text_x = x + jump_x
                text_y = y + jump_y
                ax.text(text_x, text_y, label, fontsize = 10, color='black', ha='center', va='center')
        plt.show()
        plt.close()
    P = np.random.randint(low = 1,high = 10, size = (3,3))
    showArray(P)
    

    result:
    在这里插入图片描述
    如果我们需要设定中心值,

    class MidpointNormalize(colors.Normalize):
    	"""
    	Normalise the colorbar so that diverging bars work there way either 
        side from a prescribed midpoint value)
    
    	e.g. im=ax1.imshow(array, norm=MidpointNormalize(midpoint=0.,vmin=-100, vmax=100))
    	"""
    	def __init__(self, vmin=None, vmax=None, midpoint=None, clip=False):
    		self.midpoint = midpoint
    		colors.Normalize.__init__(self, vmin, vmax, clip)
    
    	def __call__(self, value, clip=None):
    		# I'm ignoring masked values and all kinds of edge cases to make a
    		# simple example...
    		x, y = [self.vmin, self.midpoint, self.vmax], [0, 0.5, 1]
    		return np.ma.masked_array(np.interp(value, x, y), np.isnan(value))
        
    def showArray(P, cmap = 'viridis', midvalue = 0):
        '''
        show matrix with picture, and if the cmap is belongs to diverging colormaps,
        set midvalue as the center color.
        '''
        # The normal figure
        # Limits for the extent
        x_start = 0.0
        x_end = 1.0
        y_start = 0.0
        y_end = 1.0
        
        extent = [x_start, x_end, y_start, y_end]
        fig = plt.figure(figsize=(16, 12))
        ax = fig.add_subplot(111)
        im = ax.imshow(P, extent=extent, interpolation='None', cmap=cmap,
                       norm=MidpointNormalize(midpoint= midvalue,vmin=np.min(P), vmax=np.max(P)))
        fig.colorbar(im)
        plt.show()
    P = build_random_P(10, noise) - 0.1
    showArray(P, cmap = 'seismic')
    

    With center value setting:
    在这里插入图片描述
    Without center setting:
    在这里插入图片描述
    2.6 1D 绘图

    import numpy as np
    import matplotlib.pyplot as pp
    val = 0. # this is the value where you want the data to appear on the y-axis.
    ar = np.arange(10) # just as an example array
    pp.plot(ar, np.zeros_like(ar) + val, 'x')
    pp.show()
    

    result:
    在这里插入图片描述

    2.7 bar 绘图

    import matplotlib
    import matplotlib.pyplot as plt
    import numpy as np
    
    
    labels = ['G1', 'G2', 'G3', 'G4', 'G5']
    men_means = [20, 34, 30, 35, 27]
    women_means = [25, 32, 34, 20, 25]
    
    x = np.arange(len(labels))  # the label locations
    width = 0.35  # the width of the bars
    
    fig, ax = plt.subplots()
    rects1 = ax.bar(x - width/2, men_means, width, label='Men')
    rects2 = ax.bar(x + width/2, women_means, width, label='Women')
    
    # Add some text for labels, title and custom x-axis tick labels, etc.
    ax.set_ylabel('Scores')
    ax.set_title('Scores by group and gender')
    ax.set_xticks(x)
    ax.set_xticklabels(labels)
    ax.legend()
    
    
    def autolabel(rects):
        """Attach a text label above each bar in *rects*, displaying its height."""
        for rect in rects:
            height = rect.get_height()
            ax.annotate('{}'.format(height),
                        xy=(rect.get_x() + rect.get_width() / 2, height),
                        xytext=(0, 3),  # 3 points vertical offset
                        textcoords="offset points",
                        ha='center', va='bottom')
    
    
    autolabel(rects1)
    autolabel(rects2)
    
    fig.tight_layout()
    
    plt.show()
    

    在这里插入图片描述

    2.8双纵坐标绘图

    def plot(tmpdf, tmpdf2,col_list,label_list,title="",xcol = "time",ylabel="",rotation = 0):
        fig = plt.figure(figsize=(10,5))
        ax1 = fig.add_subplot(111)
        ax1.plot(np.arange(len(tmpdf)), tmpdf[col_list[0]], 'g^-', markersize=6, label = label_list[0])
        ax1.set_ylabel(ylabel)
        ax1.legend(loc='best')
    
        ax2 = ax1.twinx()  # this is the important function
        ax2.plot(np.arange(len(tmpdf2)), tmpdf2[col_list[1]], 'yv-', markersize=6,
                 label = label_list[1])
        
        ax2.legend(loc='best')
        ax2.set_ylabel(ylabel)
     
        if xcol:
            plt.xticks(np.arange(len(tmpdf[xcol])))
            ax1.set_xticklabels(tmpdf[xcol], rotation=rotation)
        if title:
            plt.title(title)
        if ylabel:
            plt.ylabel(ylabel)
        plt.grid()
        plt.show() 
    

    3. 其他

    极坐标绘图:

    import math
    import numpy as np
    sin = np.sin 
    pi = np.pi 
    import matplotlib.pyplot as plt
    
    theta=np.arange(0,2*np.pi,0.02)
    ax1 = plt.subplot(121, projection='polar')
    ax1.plot(theta,2*np.abs(sin(2*theta)) + np.abs(sin(4*theta)),'--',lw=2)
    plt.show()
    

    在这里插入图片描述
    3.2 动图

    # -*- coding: utf-8 -*-
    """
    Created on Tue Jun 18 20:51:48 2019
    
    @author: win10
    """
    
    import numpy as np
    from matplotlib import pyplot as plt
    from matplotlib import animation
    
    fig, ax = plt.subplots()
    
    x = np.arange(0, 2 * np.pi, 0.01)
    line0 = ax.plot(x, np.cos(x))
    line, = ax.plot(x, np.sin(x))
    
    def init():
        line.set_ydata(np.sin(x))
        return line,
    
    def animate(i):
        line.set_ydata(np.sin(x + i / 10.0))
        return line,
    
    animation = animation.FuncAnimation(fig=fig, func=animate, frames=100,
                                        init_func=init, interval=20, blit=False)
    
    animation.save('resetvalue.gif', writer='imagemagick')
    plt.show()
    

    在这里插入图片描述
    (缺陷:只重复展示过程一次)
    在这里插入图片描述
    此外,需要额外下载 imagemagick

    4.Color

    Alias Color
    ‘b’ blue
    ‘g’ green
    ‘r’ red
    ‘c’ cyan
    ‘m’ magenta
    ‘y’ yellow
    ‘k’ black
    ‘w’ white

    5.其他绘图包

    pyechart


    参考:

    1. matplotlib;
    2. Guide to matplotlib;
    3. Accuracy 绘制;
    4. imshow stackoverflow;
    5. cmap type select;
    6. Centre a diverging colorbar at a defined value with matplotlib
    7. 1 维绘图
    8. 动图生成 animation
    9. animation 解释;
    10. animation 官网 ;
    11. zhihu matplotlib 动图
    12. Marker;
    13. Bar绘图
    14. python 双Y轴;
    展开全文
  • 在使用NumPy进行学习...Matplotlib是一个Python的图形框架。 通过pip安装: >> pip install matplotlib 示例: import matplotlib.pyplot as plt plt.plot(X, Y, 'ro', label='Original d...

    在使用NumPy进行学习统计计算时是枯燥的,大量的数据令我们很头疼,所以我们需要把它图形化显示。 Matplotlib是一个Python的图形框架。

    通过pip安装:

    >> pip install matplotlib

     

    示例:

    import matplotlib.pyplot as plt
    plt.plot(X, Y, 'ro', label='Original data') #红色实心圈标记
    plt.plot(X, sess.run(W) * X + sess.run(b), label='Fitted line')
    plt.legend() #显示图例在左上角
    plt.show()

     

    部分函数介绍:

    plt.legend(loc='位置'),:显示图例

    plt.show():显示图片

    plt.plot(x,y,format_string,**kwargs) 
           x轴数据,y轴数据,format_string控制曲线的格式字串 

           format_string 由颜色字符,风格字符,和标记字符

    参考资料:

    https://blog.51cto.com/12731497/2154195

    https://blog.csdn.net/asialee_bird/article/details/79585869

    https://blog.csdn.net/qiurisiyu2016/article/details/80187177

    http://python.jobbole.com/87471/

     

    展开全文
  • Matplotlib Python 使用Matplotlib的滑块和按钮小部件 我们将使用滑块确定极坐标图中要绘制的叶子数量。 每次拖动滑块时,都会使用滑块的值来绘制图中的许多叶子。 ‘ 我们将使用退出按钮通过关闭图形对象和窗口...
  • matplotlib入门

    2020-04-14 15:10:48
    使用指南 使用指南本教程介绍一些基本的使用模式和最佳实践,以帮助您入门Matplotlib。 一般概念 matplotlib有大量的代码库,这让很多新用户望而却步。然而,matplotlib的大部分内容都可以...绘图的目的是帮助您尽...
  • 今天小编就为大家分享一篇python matplotlib中的subplot函数使用详解具有很好的参考价值希望对大家有所 帮助一 跟随小编过来看看吧 python里面的matplotlib.pylot是大家比较常用的功能也还不错的一个基本框架比较...
  • 一、Matplotlib简介与安装Matplotlib也就是Matrix Plot Library,顾名思义,是Python的绘图库。...安装方式:执行命令 pip install matplotlib一般常用的是它的子PyPlot,提供类似MATLAB的绘图框架。二、使用...
  • 一、Matplotlib简介与安装Matplotlib也就是Matrix Plot Library,顾名思义,是Python的绘图库。...安装方式:执行命令 pip install matplotlib一般常用的是它的子PyPlot,提供类似MATLAB的绘图框架。二、使用...
  • 一、Matplotlib简介与安装Matplotlib也就是Matrix Plot Library,顾名思义,是Python的绘图库。...安装方式:执行命令 pip install matplotlib一般常用的是它的子PyPlot,提供类似MATLAB的绘图框架。二、使用...
  • matplotlib的常见使用

    2019-08-18 22:38:13
    Matplotlib基本框架 Matplotlib是一个python的可视化...import matplotlib.pyplot as plt #pyplot是最重要的子 设置绘图风格 plt.style.use(‘classic’) # 设置图像的风格为经典风格 plt.style.available查看...
  • matplotlib.transforms

    2018-03-31 11:05:00
    像任何图形一样,matplotlib建立在变换框架之上,以便在坐标系,用户数据坐标系,轴域者坐标系,图形坐标系和显示坐标系之间轻易变换。在95%的绘图中,你不需要考虑这一点,因为他发生在背后,但随着你接近自定义...
  • #导入可视化包matplotlib下的pyplot 模块 import numpy as np # da1=np.loadtxt('data.csv',delimiter=',',skiprows=1,usecols=(1,2,3),unpack=False) # print(da1)#返回就是一个矩阵,因为之间不是用逗号隔...
  • matplotlib 可以将数据可视化展示的 matplotlib 框架分为三层,Scriping(脚本),Artist(美工),Backend(后端)。 1 创建一个figure,如: import matplotlib.pyplot as plt plt.figure(figsize=(20,8),dpi=100) # ...
  • matplotlib 绘图基础

    2019-12-15 00:30:22
    文章目录折线图(figure)绘制多图散点图...绘图使用的 import matplotlib.pyplot as plt import numpy as np 折线图(figure) #画图框架 plt.figure(figsize = (20, 6), dpi = 80) # 数据准备 x = rang...
  • 一、Matplotlib简介与安装  Matplotlib也就是Matrix Plot Library,顾名思义,是Python的绘图库。它可与NumPy一起使用,提供了一种有效的MATLAB开源替代方案。它也可以和图形工具一起使用,如PyQt和wxPython。  ...
  • 本计划接着 Figure, Axes 对象,讨论 Axis 对象和 Ticks 对象。因为涉及到坐标变换,因此先把 ...与其它绘图一样,Matplotlib 包含用于确定画布上绘制的所有元素的最终位置的任意几何变换的框架,以便在不同的坐
  • python里面的matplotlib.pylot是大家比较常用的,功能也还不错的一个。基本框架比较简单,但是做一个功能完善且比较好看整洁的图,免不了要网上查找一些函数。于是,为了节省时间,可以一劳永逸。我把常用函数作了...
  • python里面的matplotlib.pylot是大家比较常用的,功能也还不错的一个。基本框架比较简单,但是做一个功能完善且比较好看整洁的图,免不了要网上查找一些函数。于是,为了节省时间,可以一劳永逸。我把常用函数作了...
  • Matplotlib 中文用户指南 3.7 变换教程

    万次阅读 2017-01-30 11:34:43
    像任何图形一样,matplotlib 建立在变换框架之上,以便在坐标系,用户数据坐标系,轴域坐标系,图形坐标系和显示坐标系之间轻易变换。 在 95 %的绘图中,你不需要考虑这一点,因为它发生在背后,但随着你接近...
  • 这一章节对matplotlib的框架做了详细的介绍,包括matplotlib的三个API分别是什么,有什么作用?matplotlib都有哪些对象容器,分别有什么联系和关系,又包含了哪些功能等等。接下来,我们就一起来看看,俗话说得好,...
  • TensorFlow之Matplotlib(6)

    2018-10-11 00:20:00
    Matplotlib ——(分解) Matrix Plot Library 矩阵 绘图 库 · 一个极其强大的Python绘图库。官网:matplotlib.org ...· 一般常用的是它的子:PyPlot,提供类似MATLAB的绘图框架。 Mat...
  • python里面的matplotlib.pylot是大家比较常用的,功能也还不错的一个。基本框架比较简单,但是做一个功能完善且比较好看整洁的图,免不了要网上查找一些函数。于是,为了节省时间,可以一劳永逸。我把常用函数作了...
  • 一、Matplotlib简介与安装Matplotlib也就是Matrix Plot Library,顾名思义,是Python的绘图库。...安装方式:执行命令 pip install matplotlib一般常用的是它的子PyPlot,提供类似MATLAB的绘图框架。二、使用...
  • 看这个了解大概的matplotlib使用的背景框架:基于函数编程与基于对象编程的区别: Figure, Axes, Axis, Tick,Canvas之间的关系是什么? Backend主要包含的FigureCanvas 与 Renderer分别可以表现为画布和画笔,而...
  • 第一步:https://matplotlib.org/tutorials/introductory/usage.html#sphx-glr-tutorials-introductory-usage-py 看这个了解大概的matplotlib使用的背景框架:基于函数编程与基于对象编程的区别: ...Backend主要...
  • Matplotlib是一个Python的图形框架,类似于MATLAB和R语言。本是基于py2.7 64位的,在win10下安装成功
  • Matplotlib 软件包中子,提供了一个类似MATLAB的绘图框架。 import matplotlib.pyplot as plt import numpy as np # 创建画布 # F = plt.figure()#创建空白画布,可以指定画布的大小,像素 #...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 251
精华内容 100
关键字:

matplotlib架包