精华内容
下载资源
问答
  • 利用matplotlib函数图像

    千次阅读 2018-09-19 21:15:53
    绘制 保存 代码如下: import numpy as np import matplotlib.pyplot as pt from matplotlib import font_manager # pt.rcParams["font.sans-serif"] = ['SimHei'] # 设置中文字体显示 my_font = font_...

    主要步骤:

    准备数据
    配置画板
    绘制
    保存
    代码如下:

    import numpy as np
    import matplotlib.pyplot as pt
    from matplotlib import font_manager
    
    # pt.rcParams["font.sans-serif"] = ['SimHei']
    # 设置中文字体显示
    my_font = font_manager.FontProperties(fname="C:\Windows\Fonts\simsun.ttc")
    # 准备数据
    X = np.linspace(-np.pi, np.pi * 2, 1000)
    # 配置画板,figsize用来设置图例的大小
    pt.figure(figsize=(6,3),facecolor="yellow")
    # subplot的第一个参数表示行,第二个参数表示列,第三个参数表示图例中的激活位置
    pt.subplot(1,1,1)
    # 准备Y数据
    Y_x2 = X1**2
    Y_sin = np.sin(X)
    
    # 标题,X坐标和Y坐标名称
    pt.xlabel(u"X数值",fontproperties=my_font)
    pt.ylabel(u"Y数值",fontproperties=my_font)
    pt.title(u"函数图像",fontproperties=my_font,fontsize=20)
    
    # 设置X,Y轴上下限
    pt.xlim(-np.pi,np.pi)
    pt.ylim(-1,1)
    
    # 设置关键刻度
    pt.xticks([-np.pi,-np.pi/2.0,0,np.pi/2,np.pi])
    # 添加文字,第一个参数为X坐标,第二个参数是Y轴坐标,以数据的刻度为基准
    pt.text(0.0,-0.5,'don`s move',fontdict={'size':'16','color':'b'})
    # 添加标注,xy是标注箭头要指的点,xytext:描述信息的坐标,arrowprops箭头的样式
    pt.annotate('note!!',xy=(-np.pi/2.0,-1),xytext=(-np.pi/2,-0.25),fontsize=16,arrowprops=dict(facecolor='black',shrink=0.01))
    
    # 保存到文件
    pt.savefig("test2.jpg")
    
    # 图例
    pt.plot(X1, Y_x2,c="g",lw=3,label=u"x2函数")
    # 直线-,虚线--,点线:,点划线-.
    pt.plot(X, Y_sin,c="r",lw=5,ls="-.",label=u"sin函数")
    # 添加图例
    pt.legend(prop=my_font)
    
    pt.show()
    
    展开全文
  • 使用matplotlib绘制3D函数图像 学习并尝试了利用matplotlib进行3D函数图像的绘制 1 import matplotlib.pyplot as plt # 绘图用的模块 2 from mpl_toolkits.mplot3d import Axes3D # 绘制3D坐标的函数 3 import ...

    使用matplotlib绘制3D函数图像

    学习并尝试了利用matplotlib进行3D函数图像的绘制
     1 import matplotlib.pyplot as plt  # 绘图用的模块
     2 from mpl_toolkits.mplot3d import Axes3D  # 绘制3D坐标的函数
     3 import numpy as np
     4 
     5 
     6 def fun(x, y):
     7     return np.power(x, 2) + np.power(y, 2)
     8 
     9 
    10 fig1 = plt.figure()  # 创建一个绘图对象
    11 ax = Axes3D(fig1)  # 用这个绘图对象创建一个Axes对象(有3D坐标)
    12 X, Y = np.mgrid[-2:2:40j, -2:2:40j]  # 从-2到2分别生成40个取样坐标,并作满射联合
    13 Z = fun(X, Y)  # 用取样点横纵坐标去求取样点Z坐标
    14 plt.title("This is main title")  # 总标题
    15 ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=plt.cm.coolwarm, alpha=0.5)  # 用取样点(x,y,z)去构建曲面
    16 ax.set_xlabel('x label', color='r')
    17 ax.set_ylabel('y label', color='g')
    18 ax.set_zlabel('z label', color='b')  # 给三个坐标轴注明
    19 plt.show()  # 显示模块中的所有绘图对象
    

    具体输出结果如下:
    在这里插入图片描述

    展开全文
  • Matplotlib 系列之「绘制函数图像

    千次阅读 2018-08-03 03:51:41
    matplotlib 是 python 最著名的绘图库,它提供了一整套和 matlab 相似的命令 API,十分适合交互式进行绘图。它的文档相当完备,并且 ...这是要实现的效果图,利用 Matplotlib 绘制函数 y = x^2^ 的图像。image代...

    matplotlib 是 python 最著名的绘图库,它提供了一整套和 matlab 相似的命令 API,十分适合交互式进行绘图。

    它的文档相当完备,并且 Gallery 页面 中有上百幅缩略图,打开之后都有源程序。因此如果你需要绘制某种类型的图,只需要在这个页面中浏览/复制/粘贴一下,基本上都能搞定。

    这是要实现的效果图,利用 Matplotlib 绘制函数 y = x^2^ 的图像。

    Matplotlib 系列之「绘制函数图像」

    image

    代码实现

    import matplotlib.pyplot as plt

    import numpy as np

    # 定义 x 变量的范围 (-3,3) 数量 50

    x=np.linspace(-3,3,50)

    y=x**2

    # Figure 并指定大小

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

    # 绘制 y=x^2 的图像,设置 color 为 red,线宽度是 1,线的样式是 --

    plt.plot(x,y,color='red',linewidth=1.0,linestyle='--')

    # 设置 x,y 轴的范围以及 label 标注

    plt.xlim(-1,2)

    plt.ylim(-2,3)

    plt.xlabel('x')

    plt.ylabel('y')

    # 设置坐标轴刻度线

    # Tick X 范围 (-1,2) Tick Label(-1,-0.25,0.5,1.25,2) 刻度数量 5 个

    new_ticks=np.linspace(-1,2,5)

    plt.xticks(new_ticks)

    # Tick Y 范围(-2.2,-1,1,1.5,2.4) ,Tick Label (-2.2, -1, 1, 1.5, 2.4) 别名(下面的英文)

    plt.yticks([-2.2,-1,1,1.5,2.4],

    [r'$really\ bad$',r'$bad$',r'$normal$',r'$good$',r'$really\ good$'])

    # 设置坐标轴 gca() 获取坐标轴信息

    ax=plt.gca()

    # 使用.spines设置边框:x轴;将右边颜色设置为 none。

    # 使用.set_position设置边框位置:y=0的位置;(位置所有属性:outward,axes,data)

    ax.spines['right'].set_color('none')

    ax.spines['top'].set_color('none')

    # 移动坐标轴

    # 将 bottom 即是 x 坐标轴设置到 y=0 的位置。

    ax.xaxis.set_ticks_position('bottom')

    ax.spines['bottom'].set_position(('data',0))

    # 将 left 即是 y 坐标轴设置到 x=0 的位置。

    ax.yaxis.set_ticks_position('left')

    ax.spines['left'].set_position(('data',0))

    # 设置标签

    ax.set_title('y = x^2',fontsize=14,color='r')

    # 显示图像

    plt.show()

    首先一幅 Matplotlib 的图像组成部分介绍。

    Matplotlib 系列之「绘制函数图像」

    image

    基本构成

    在 matplotlib 中,整个图像为一个 Figure 对象。在 Figure 对象中可以包含一个或者多个 Axes 对象。每个 Axes(ax) 对象都是一个拥有自己坐标系统的绘图区域。

    所属关系如下(图片来自网络):

    Matplotlib 系列之「绘制函数图像」

    image

    图上:Title 为图像标题,Axis 为坐标轴, Label 为坐标轴标注,Tick 为刻度线,Tick Label 为刻度注释。

    各个对象关系可以梳理成以下内容(图片来自网络):

    Matplotlib 系列之「绘制函数图像」

    image

    Matplotlib 绘图步骤分析

    Matplotlib 系列之「绘制函数图像」

    image

    注意

    这里不讲解 matplotlib 的安装,我使用的是 Anaconda 的 notebook,因此,可以直接导入 matplotlib 的module,想要安装 Anaconda 的请查看的写的另一篇文章。

    如果说不想使用 Anaconda,可以看看这篇推荐文章,教你如何安装 matplotlib(视频和文章教程)— 莫烦 Python -- Matplotlib

    上面虽然贴了全部的代码,有 matplotlib 基础的人一看便懂,但是对于初学者来说,就比较抓脑了。

    一、matplotlib 实现简单图像

    Matplotlib 系列之「绘制函数图像」

    image

    使用 import 导入模块 matplotlib.pyplot,并简写成 plt 使用 import 导入模块 numpy,并简写成 np。

    #导入 module

    import matplotlib.pyplot as plt

    import numpy as np

    使用 np.linspace 定义 x:范围是 (-3,3),个数是50,仿真一维数据组 (x ,y) 表示曲线。

    # 定义 x 变量的范围 (-3,3) 数量 50

    x=np.linspace(-3,3,50)

    y=x**2

    使用 plt.figure 定义一个图像窗口,使用 plt.plot 画 (x ,y) 曲线,使用 plt.show 显示图像。

    #绘制及显示

    plt.figure()

    plt.plot(x, y)

    plt.show()

    最终代码

    import matplotlib.pyplot as plt

    import numpy as np

    # 定义 x 变量的范围 (-3,3) 数量 50

    x=np.linspace(-3,3,50)

    y=x**2

    plt.figure()

    plt.plot(x, y)

    plt.show()

    运行结果

    Matplotlib 系列之「绘制函数图像」

    image

    看到这个,是不是和最终效果图差距很大,没关系,我们接着往下看。

    二、设置 Figure 图像

    使用 plt.figure 定义一个图像窗口:编号为 3,大小为 (8, 5)。使用plt.plot画(x ,y)曲线,曲线的颜色属性(color)为红色。曲线的宽度(linewidth)为1.0。曲线的类型(linestyle)为虚线, 使用plt.show显示图像。

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

    plt.plot(x,y,color='red',linewidth=1.0,linestyle='--')

    最终代码

    import matplotlib.pyplot as plt

    import numpy as np

    # 定义 x 变量的范围 (-3,3) 数量 50

    x=np.linspace(-3,3,50)

    y=x**2

    # Figure 并指定大小

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

    # 绘制 y=x^2 的图像,设置 color 为 red,线宽度是 1,线的样式是 --

    plt.plot(x,y,color='red',linewidth=1.0,linestyle='--')

    plt.show()

    运行效果

    Matplotlib 系列之「绘制函数图像」

    image

    三、设置坐标轴

    设置 x,y 轴坐标范围及标注 label

    使用 plt.xlim 设置x坐标轴范围:(-1, 2); 使用 plt.ylim 设置 y 坐标轴范围:(-2, 3);

    使用 plt.xlabel 设置 x 坐标轴名称:’x’; 使用 plt.ylabel 设置 y 坐标轴名称:’I am y’;

    代码实现

    import matplotlib.pyplot as plt

    import numpy as np

    # 定义 x 变量的范围 (-3,3) 数量 50

    x=np.linspace(-3,3,50)

    y=x**2

    # Figure 并指定大小

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

    # 绘制 y=x^2 的图像,设置 color 为 red,线宽度是 1,线的样式是 --

    plt.plot(x,y,color='red',linewidth=1.0,linestyle='--')

    # 设置 x,y 轴的范围以及 label 标注

    plt.xlim(-1,2)

    plt.ylim(-2,3)

    plt.xlabel('x')

    plt.ylabel('y')

    plt.show()

    运行结果

    Matplotlib 系列之「绘制函数图像」

    image

    设置 x, y 刻度范围及刻度标注

    设置 x 轴:使用 np.linspace 定义范围以及个数:范围是(-1,2); 个数是 5。

    使用 plt.xticks 设置 x 轴刻度:范围是(-1,2); 个数是5。

    设置 y 轴:使用 plt.yticks 设置 y 轴刻度以及名称:刻度为 [-2, -1.8, -1, 1.22, 3];对应刻度的名称为 [‘really bad’,’bad’,’normal’,’good’, ‘really good’]。

    # 设置坐标轴刻度线

    # Tick X 范围 (-1,2) Tick Label(-1,-0.25,0.5,1.25,2) 刻度数量 5 个

    new_ticks=np.linspace(-1,2,5)

    plt.xticks(new_ticks)

    # Tick Y 范围(-2.2,-1,1,1.5,2.4) ,Tick Label (-2.2, -1, 1, 1.5, 2.4) 别名(下面的英文)

    plt.yticks([-2.2,-1,1,1.5,2.4],

    [r'$really\ bad$',r'$bad$',r'$normal$',r'$good$',r'$really\ good$'])

    最终代码

    import matplotlib.pyplot as plt

    import numpy as np

    # 定义 x 变量的范围 (-3,3) 数量 50

    x=np.linspace(-3,3,50)

    y=x**2

    # Figure 并指定大小

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

    # 绘制 y=x^2 的图像,设置 color 为 red,线宽度是 1,线的样式是 --

    plt.plot(x,y,color='red',linewidth=1.0,linestyle='--')

    # 设置 x,y 轴的范围以及 label 标注

    plt.xlim(-1,2)

    plt.ylim(-2,3)

    plt.xlabel('x')

    plt.ylabel('y')

    # 设置坐标轴刻度线

    # Tick X 范围 (-1,2) Tick Label(-1,-0.25,0.5,1.25,2) 刻度数量 5 个

    new_ticks=np.linspace(-1,2,5)

    plt.xticks(new_ticks)

    # Tick Y 范围(-2.2,-1,1,1.5,2.4) ,Tick Label (-2.2, -1, 1, 1.5, 2.4) 别名(下面的英文)

    plt.yticks([-2.2,-1,1,1.5,2.4],

    [r'$really\ bad$',r'$bad$',r'$normal$',r'$good$',r'$really\ good$'])

    # 显示图像

    plt.show()

    运行效果,注意看 x, y 轴刻度以及标注变化

    Matplotlib 系列之「绘制函数图像」

    image

    四、移动坐标轴

    隐藏右边框和上边框:

    1. 使用 plt.gca 获取当前坐标轴信息。
    2. 使用 .spines 设置边框:右侧边框;使用.set_color设置边框颜色:默认白色;
    3. 使用 .spines 设置边框:上边框;使用.set_color设置边框颜色:默认白色;

    调整坐标轴至中心(将 left 边框调整到 x=0 处,将 bottom 边框调整到 y=0 处):

    1. 使用 .xaxis.set_ticks_position 设置 x 坐标刻度数字或名称的位置:bottom。(所有位置:top,bottom,both,default,none)。
    2. 使用 .spines 设置边框:x 轴;使用 .set_position设置边框位置:y=0 的位置;(位置所有属性:outward,axes,data)

    # 设置坐标轴 gca() 获取坐标轴信息

    ax=plt.gca()

    # 使用.spines设置边框:x轴;将右边颜色设置为 none。

    # 使用.set_position设置边框位置:y=0的位置;(位置所有属性:outward,axes,data)

    ax.spines['right'].set_color('none')

    ax.spines['top'].set_color('none')

    # 移动坐标轴

    # 将 bottom 即是 x 坐标轴设置到 y=0 的位置。

    ax.xaxis.set_ticks_position('bottom')

    ax.spines['bottom'].set_position(('data',0))

    # 将 left 即是 y 坐标轴设置到 x=0 的位置。

    ax.yaxis.set_ticks_position('left')

    ax.spines['left'].set_position(('data',0))

    最终代码

    import matplotlib.pyplot as plt

    import numpy as np

    # 定义 x 变量的范围 (-3,3) 数量 50

    x=np.linspace(-3,3,50)

    y=x**2

    # Figure 并指定大小

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

    # 绘制 y=x^2 的图像,设置 color 为 red,线宽度是 1,线的样式是 --

    plt.plot(x,y,color='red',linewidth=1.0,linestyle='--')

    # 设置 x,y 轴的范围以及 label 标注

    plt.xlim(-1,2)

    plt.ylim(-2,3)

    plt.xlabel('x')

    plt.ylabel('y')

    # 设置坐标轴刻度线

    # Tick X 范围 (-1,2) Tick Label(-1,-0.25,0.5,1.25,2) 刻度数量 5 个

    new_ticks=np.linspace(-1,2,5)

    plt.xticks(new_ticks)

    # Tick Y 范围(-2.2,-1,1,1.5,2.4) ,Tick Label (-2.2, -1, 1, 1.5, 2.4) 别名(下面的英文)

    plt.yticks([-2.2,-1,1,1.5,2.4],

    [r'$really\ bad$',r'$bad$',r'$normal$',r'$good$',r'$really\ good$'])

    # 设置坐标轴 gca() 获取坐标轴信息

    ax=plt.gca()

    # 使用.spines设置边框:x轴;将右边颜色设置为 none。

    # 使用.set_position设置边框位置:y=0的位置;(位置所有属性:outward,axes,data)

    ax.spines['right'].set_color('none')

    ax.spines['top'].set_color('none')

    # 移动坐标轴

    # 将 bottom 即是 x 坐标轴设置到 y=0 的位置。

    ax.xaxis.set_ticks_position('bottom')

    ax.spines['bottom'].set_position(('data',0))

    # 将 left 即是 y 坐标轴设置到 x=0 的位置。

    ax.yaxis.set_ticks_position('left')

    ax.spines['left'].set_position(('data',0))

    # 显示图像

    plt.show()

    运行结果

    Matplotlib 系列之「绘制函数图像」

    image

    五、设置标题

    使用 .set_title 设置标题,声明标题为 y = x^2^,字体大小 14,颜色为 red。

    # 设置标签

    ax.set_title('y = x^2',fontsize=14,color='r')

    最终代码

    import matplotlib.pyplot as plt

    import numpy as np

    # 定义 x 变量的范围 (-3,3) 数量 50

    x=np.linspace(-3,3,50)

    y=x**2

    # Figure 并指定大小

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

    # 绘制 y=x^2 的图像,设置 color 为 red,线宽度是 1,线的样式是 --

    plt.plot(x,y,color='red',linewidth=1.0,linestyle='--')

    # 设置 x,y 轴的范围以及 label 标注

    plt.xlim(-1,2)

    plt.ylim(-2,3)

    plt.xlabel('x')

    plt.ylabel('y')

    # 设置坐标轴刻度线

    # Tick X 范围 (-1,2) Tick Label(-1,-0.25,0.5,1.25,2) 刻度数量 5 个

    new_ticks=np.linspace(-1,2,5)

    plt.xticks(new_ticks)

    # Tick Y 范围(-2.2,-1,1,1.5,2.4) ,Tick Label (-2.2, -1, 1, 1.5, 2.4) 别名(下面的英文)

    plt.yticks([-2.2,-1,1,1.5,2.4],

    [r'$really\ bad$',r'$bad$',r'$normal$',r'$good$',r'$really\ good$'])

    # 设置坐标轴 gca() 获取坐标轴信息

    ax=plt.gca()

    # 使用.spines设置边框:x轴;将右边颜色设置为 none。

    # 使用.set_position设置边框位置:y=0的位置;(位置所有属性:outward,axes,data)

    ax.spines['right'].set_color('none')

    ax.spines['top'].set_color('none')

    # 移动坐标轴

    # 将 bottom 即是 x 坐标轴设置到 y=0 的位置。

    ax.xaxis.set_ticks_position('bottom')

    ax.spines['bottom'].set_position(('data',0))

    # 将 left 即是 y 坐标轴设置到 x=0 的位置。

    ax.yaxis.set_ticks_position('left')

    ax.spines['left'].set_position(('data',0))

    # 设置标签

    ax.set_title('y = x^2',fontsize=14,color='r')

    # 显示图像

    plt.show()

    运行结果

    Matplotlib 系列之「绘制函数图像」

    image

    最后,附上 matplotlib 整体结构图(图片来自网络):

    Matplotlib 系列之「绘制函数图像」

    image

    推荐阅读

    来北京的日子

    这么多年都白学了,原来是方法没有用对

    贝斯狸的 Python 之旅 -- 深入切片操作及原理

    墙裂推荐 Anaconda | 安利 Python IDE

    编程界的半壁江山

    好书推荐

    统计学习方法

    最近正在研究机器学习中的算法和公式,朋友给我推荐了这本书,经过一番考察,总算是觉得这本书对得起读者,也值得推荐。

    李航,日本京都大学电气工程系毕业,日本东京大学计算机科学博士。曾任职于日本 NEC 公司中央研究所,微软亚洲研究院高级研究员及主任研究员,现任华为诺亚方舟实验室首席科学家。北京大学、南开大学、西安交通大学客座教授。研究方向包括信息检索、自然语言处理、统计机器学习及数据挖掘。

    豆瓣简介

    详细介绍支持向量机、Boosting、最大熵、条件随机场等十个统计学习方法。

    Matplotlib 系列之「绘制函数图像」

    image

    思维力:高效的系统思维

    王世民,深圳尔雅 CEO,YouCore 创始人,知乎专栏“框架的力量”作者。

    一个矛盾体。心里挺鄙视学历,但不小心念了名校、拿了硕士;崇尚个人自由,但又创办公司绑死了自己;特不喜欢教书,但现在干着培训。一个不安分的人。短短十来年,当过苦逼的IT码农、做过装逼的咨询顾问、现在干着土鳖的民企老板。

    这本书对我的思维能力提升帮助蛮大的,书中提供的很多学习方法都值得借鉴,自从阅读了本书以后,我也喜欢画脑图总结,不断尝试系统学习。我强烈建议读者们去看看【框架的力量】的专栏,对提高你的思维和学习效率很有帮助。

    豆瓣简介

    “真正有用”正是这本书不同于其它思维书籍之处!

    你有没有遇到过以下窘境——分析时想不明白、表达时说不清楚、学习时学不快速?你想不想全面提升你的思维能力?你知道问题解决技巧和表达技巧有哪些吗?

    此书中有你想知道的答案。

    本书分为 3 个部分共 10 章,各章可自成体系地解决一个问题,同时整书又形成一套体系化的系统思维。

    第一部分探秘了“框架”力量的根源。万事万物的本质其实是一个个的系统,而掌握了系统的“框架”也就把握了事物的本质。没有什么问题是不能利用框架解决的,如果一个不行,那就两个。

    第二部分将运用“框架”解决问题分解为五个步骤——界定问题、构建框架、明晰关键、高效执行及检查调整,并精炼了相应的优秀思考方法和工具。此外,还传授了在有限时间、有限资源限制下高质量地解决问题的秘诀——“假设思考”。

    第三部分传授如何运用“框架”有效表达。逐层递进地演示了自上而下表达的魅力,并用丰富的图表阐述了何为“形象化表达”。

    对于想全面提升思维能力的读者,建议按照本书章节顺序阅读;对于迫切想寻求具体问题解决技巧或表达技巧的读者,也可以直接阅读相应章节。

    Matplotlib 系列之「绘制函数图像」

    image

    想要书籍的请在后台留言【180803】获取这两本书的 PDF 版,【思维力:高效的系统思维】附视频教程,希望在学习的道路上,我们能少走弯路,我会尽量推荐自己读过的好书,希望读者们能跟着我一起多读书,读好书。

    Matplotlib 系列之「绘制函数图像」

    image

    展开全文
  • matplotlib 是 python 最著名的绘图库,它提供了一整套和 matlab 相似的命令 API,十分适合交互式进行绘图。 它的文档相当完备,并且 ...这是要实现的效果图,利用 Matplotlib 绘制函数 y = x^2^ 的图像。 代码...

    matplotlib 是 python 最著名的绘图库,它提供了一整套和 matlab 相似的命令 API,十分适合交互式进行绘图。

    它的文档相当完备,并且 Gallery 页面 中有上百幅缩略图,打开之后都有源程序。因此如果你需要绘制某种类型的图,只需要在这个页面中浏览/复制/粘贴一下,基本上都能搞定。

    这是要实现的效果图,利用 Matplotlib 绘制函数 y = x^2^ 的图像。

    代码实现

    import matplotlib.pyplot as plt
    import numpy as np
    
    # 定义 x 变量的范围 (-3,3) 数量 50 
    x=np.linspace(-3,3,50)
    y=x**2
    
    # Figure 并指定大小
    plt.figure(num=3,figsize=(8,5))
    # 绘制 y=x^2 的图像,设置 color 为 red,线宽度是 1,线的样式是 --
    plt.plot(x,y,color='red',linewidth=1.0,linestyle='--')
    
    # 设置 x,y 轴的范围以及 label 标注
    plt.xlim(-1,2)
    plt.ylim(-2,3)
    plt.xlabel('x')
    plt.ylabel('y')
    
    # 设置坐标轴刻度线 
    # Tick X 范围 (-1,2) Tick Label(-1,-0.25,0.5,1.25,2) 刻度数量 5 个
    new_ticks=np.linspace(-1,2,5)
    plt.xticks(new_ticks)
    
    # Tick Y 范围(-2.2,-1,1,1.5,2.4) ,Tick Label (-2.2, -1, 1, 1.5, 2.4) 别名(下面的英文)
    plt.yticks([-2.2,-1,1,1.5,2.4],
              [r'$really\ bad$',r'$bad$',r'$normal$',r'$good$',r'$really\ good$'])
    
    
    # 设置坐标轴 gca() 获取坐标轴信息
    ax=plt.gca()
    # 使用.spines设置边框:x轴;将右边颜色设置为 none。
    # 使用.set_position设置边框位置:y=0的位置;(位置所有属性:outward,axes,data)
    ax.spines['right'].set_color('none')
    ax.spines['top'].set_color('none')
    
    # 移动坐标轴
    # 将 bottom 即是 x 坐标轴设置到 y=0 的位置。
    ax.xaxis.set_ticks_position('bottom')
    ax.spines['bottom'].set_position(('data',0))
    
    # 将 left 即是 y 坐标轴设置到 x=0 的位置。
    ax.yaxis.set_ticks_position('left')
    ax.spines['left'].set_position(('data',0))
    
    # 设置标签
    ax.set_title('y = x^2',fontsize=14,color='r')
    
    # 显示图像
    plt.show()
    复制代码

    首先一幅 Matplotlib 的图像组成部分介绍。

    基本构成

    在 matplotlib 中,整个图像为一个 Figure 对象。在 Figure 对象中可以包含一个或者多个 Axes 对象。每个 Axes(ax) 对象都是一个拥有自己坐标系统的绘图区域。

    所属关系如下(图片来自网络):

    图上:Title 为图像标题,Axis 为坐标轴, Label 为坐标轴标注,Tick 为刻度线,Tick Label 为刻度注释。

    各个对象关系可以梳理成以下内容(图片来自网络):

    Matplotlib 绘图步骤分析

    注意

    这里不讲解 matplotlib 的安装,我使用的是 Anaconda 的 notebook,因此,可以直接导入 matplotlib 的module,想要安装 Anaconda 的请查看的写的另一篇文章。

    如果说不想使用 Anaconda,可以看看这篇推荐文章,教你如何安装 matplotlib(视频和文章教程)— 莫烦 Python -- Matplotlib

    上面虽然贴了全部的代码,有 matplotlib 基础的人一看便懂,但是对于初学者来说,就比较抓脑了。

    一、matplotlib 实现简单图像

    使用 import 导入模块 matplotlib.pyplot,并简写成 plt  使用 import 导入模块 numpy,并简写成 np

    #导入 module
    import matplotlib.pyplot as plt
    import numpy as np
    复制代码

    使用 np.linspace 定义 x:范围是 (-3,3),个数是50,仿真一维数据组 (x ,y) 表示曲线。

    # 定义 x 变量的范围 (-3,3) 数量 50 
    x=np.linspace(-3,3,50)
    y=x**2
    复制代码

    使用 plt.figure 定义一个图像窗口,使用 plt.plot 画 (x ,y) 曲线,使用 plt.show 显示图像。

    #绘制及显示
    plt.figure()
    plt.plot(x, y)
    plt.show()
    复制代码

    最终代码

    import matplotlib.pyplot as plt
    import numpy as np
    
    # 定义 x 变量的范围 (-3,3) 数量 50 
    x=np.linspace(-3,3,50)
    y=x**2
    
    plt.figure()
    plt.plot(x, y)
    plt.show()
    复制代码

    运行结果

    看到这个,是不是和最终效果图差距很大,没关系,我们接着往下看。

    二、设置 Figure 图像

    使用 plt.figure 定义一个图像窗口:编号为 3,大小为 (8, 5)。使用plt.plot画(x ,y)曲线,曲线的颜色属性(color)为红色。曲线的宽度(linewidth)为1.0。曲线的类型(linestyle)为虚线, 使用plt.show显示图像。

    plt.figure(num=3,figsize=(8,5))
    plt.plot(x,y,color='red',linewidth=1.0,linestyle='--')
    复制代码

    最终代码

    import matplotlib.pyplot as plt
    import numpy as np
    
    # 定义 x 变量的范围 (-3,3) 数量 50 
    x=np.linspace(-3,3,50)
    y=x**2
    
    # Figure 并指定大小
    plt.figure(num=3,figsize=(8,5))
    # 绘制 y=x^2 的图像,设置 color 为 red,线宽度是 1,线的样式是 --
    plt.plot(x,y,color='red',linewidth=1.0,linestyle='--')
    
    plt.show()
    复制代码

    运行效果

    三、设置坐标轴

    设置 x,y 轴坐标范围及标注 label

    使用 plt.xlim 设置x坐标轴范围:(-1, 2); 使用 plt.ylim 设置 y 坐标轴范围:(-2, 3);

    使用 plt.xlabel 设置 x 坐标轴名称:’x’; 使用 plt.ylabel 设置 y 坐标轴名称:’I am y’;

    代码实现

    import matplotlib.pyplot as plt
    import numpy as np
    
    # 定义 x 变量的范围 (-3,3) 数量 50 
    x=np.linspace(-3,3,50)
    y=x**2
    
    # Figure 并指定大小
    plt.figure(num=3,figsize=(8,5))
    # 绘制 y=x^2 的图像,设置 color 为 red,线宽度是 1,线的样式是 --
    plt.plot(x,y,color='red',linewidth=1.0,linestyle='--')
    
    # 设置 x,y 轴的范围以及 label 标注
    plt.xlim(-1,2)
    plt.ylim(-2,3)
    plt.xlabel('x')
    plt.ylabel('y')
    
    plt.show()
    复制代码

    运行结果

    设置 x, y 刻度范围及刻度标注

    设置 x 轴 使用 np.linspace 定义范围以及个数:范围是(-1,2); 个数是 5。

    使用 plt.xticks 设置 x 轴刻度:范围是(-1,2); 个数是5。

    设置 y 轴 使用 plt.yticks 设置 y 轴刻度以及名称:刻度为 [-2, -1.8, -1, 1.22, 3];对应刻度的名称为 [‘really bad’,’bad’,’normal’,’good’, ‘really good’]。

    # 设置坐标轴刻度线 
    # Tick X 范围 (-1,2) Tick Label(-1,-0.25,0.5,1.25,2) 刻度数量 5 个
    new_ticks=np.linspace(-1,2,5)
    plt.xticks(new_ticks)
    
    # Tick Y 范围(-2.2,-1,1,1.5,2.4) ,Tick Label (-2.2, -1, 1, 1.5, 2.4) 别名(下面的英文)
    plt.yticks([-2.2,-1,1,1.5,2.4],
              [r'$really\ bad$',r'$bad$',r'$normal$',r'$good$',r'$really\ good$'])
    复制代码

    最终代码

    import matplotlib.pyplot as plt
    import numpy as np
    
    # 定义 x 变量的范围 (-3,3) 数量 50 
    x=np.linspace(-3,3,50)
    y=x**2
    
    # Figure 并指定大小
    plt.figure(num=3,figsize=(8,5))
    # 绘制 y=x^2 的图像,设置 color 为 red,线宽度是 1,线的样式是 --
    plt.plot(x,y,color='red',linewidth=1.0,linestyle='--')
    
    # 设置 x,y 轴的范围以及 label 标注
    plt.xlim(-1,2)
    plt.ylim(-2,3)
    plt.xlabel('x')
    plt.ylabel('y')
    
    # 设置坐标轴刻度线 
    # Tick X 范围 (-1,2) Tick Label(-1,-0.25,0.5,1.25,2) 刻度数量 5 个
    new_ticks=np.linspace(-1,2,5)
    plt.xticks(new_ticks)
    
    # Tick Y 范围(-2.2,-1,1,1.5,2.4) ,Tick Label (-2.2, -1, 1, 1.5, 2.4) 别名(下面的英文)
    plt.yticks([-2.2,-1,1,1.5,2.4],
              [r'$really\ bad$',r'$bad$',r'$normal$',r'$good$',r'$really\ good$'])
    
    # 显示图像
    plt.show()
    复制代码

    运行效果,注意看 x, y 轴刻度以及标注变化

    四、移动坐标轴

    隐藏右边框和上边框

    1. 使用 plt.gca 获取当前坐标轴信息。

    2. 使用 .spines 设置边框:右侧边框;使用.set_color设置边框颜色:默认白色;

      使用 .spines 设置边框:上边框;使用.set_color设置边框颜色:默认白色;

    调整坐标轴至中心(将 left 边框调整到 x=0 处,将 bottom 边框调整到 y=0 处)

    1. 使用 .xaxis.set_ticks_position 设置 x 坐标刻度数字或名称的位置:bottom。(所有位置:topbottombothdefaultnone)。
    2. 使用 .spines 设置边框:x 轴;使用 .set_position设置边框位置:y=0 的位置;(位置所有属性:outwardaxesdata
    # 设置坐标轴 gca() 获取坐标轴信息
    ax=plt.gca()
    # 使用.spines设置边框:x轴;将右边颜色设置为 none。
    # 使用.set_position设置边框位置:y=0的位置;(位置所有属性:outward,axes,data)
    ax.spines['right'].set_color('none')
    ax.spines['top'].set_color('none')
    
    # 移动坐标轴
    # 将 bottom 即是 x 坐标轴设置到 y=0 的位置。
    ax.xaxis.set_ticks_position('bottom')
    ax.spines['bottom'].set_position(('data',0))
    
    # 将 left 即是 y 坐标轴设置到 x=0 的位置。
    ax.yaxis.set_ticks_position('left')
    ax.spines['left'].set_position(('data',0))
    复制代码

    最终代码

    import matplotlib.pyplot as plt
    import numpy as np
    
    # 定义 x 变量的范围 (-3,3) 数量 50 
    x=np.linspace(-3,3,50)
    y=x**2
    
    # Figure 并指定大小
    plt.figure(num=3,figsize=(8,5))
    # 绘制 y=x^2 的图像,设置 color 为 red,线宽度是 1,线的样式是 --
    plt.plot(x,y,color='red',linewidth=1.0,linestyle='--')
    
    # 设置 x,y 轴的范围以及 label 标注
    plt.xlim(-1,2)
    plt.ylim(-2,3)
    plt.xlabel('x')
    plt.ylabel('y')
    
    # 设置坐标轴刻度线 
    # Tick X 范围 (-1,2) Tick Label(-1,-0.25,0.5,1.25,2) 刻度数量 5 个
    new_ticks=np.linspace(-1,2,5)
    plt.xticks(new_ticks)
    
    # Tick Y 范围(-2.2,-1,1,1.5,2.4) ,Tick Label (-2.2, -1, 1, 1.5, 2.4) 别名(下面的英文)
    plt.yticks([-2.2,-1,1,1.5,2.4],
              [r'$really\ bad$',r'$bad$',r'$normal$',r'$good$',r'$really\ good$'])
    
    # 设置坐标轴 gca() 获取坐标轴信息
    ax=plt.gca()
    # 使用.spines设置边框:x轴;将右边颜色设置为 none。
    # 使用.set_position设置边框位置:y=0的位置;(位置所有属性:outward,axes,data)
    ax.spines['right'].set_color('none')
    ax.spines['top'].set_color('none')
    
    # 移动坐标轴
    # 将 bottom 即是 x 坐标轴设置到 y=0 的位置。
    ax.xaxis.set_ticks_position('bottom')
    ax.spines['bottom'].set_position(('data',0))
    
    # 将 left 即是 y 坐标轴设置到 x=0 的位置。
    ax.yaxis.set_ticks_position('left')
    ax.spines['left'].set_position(('data',0))
    
    # 显示图像
    plt.show()
    复制代码

    运行结果

    五、设置标题

    使用 .set_title 设置标题,声明标题为 y = x^2^,字体大小 14,颜色为 red。

    # 设置标签
    ax.set_title('y = x^2',fontsize=14,color='r')
    复制代码

    最终代码

    import matplotlib.pyplot as plt
    import numpy as np
    
    # 定义 x 变量的范围 (-3,3) 数量 50 
    x=np.linspace(-3,3,50)
    y=x**2
    
    # Figure 并指定大小
    plt.figure(num=3,figsize=(8,5))
    # 绘制 y=x^2 的图像,设置 color 为 red,线宽度是 1,线的样式是 --
    plt.plot(x,y,color='red',linewidth=1.0,linestyle='--')
    
    # 设置 x,y 轴的范围以及 label 标注
    plt.xlim(-1,2)
    plt.ylim(-2,3)
    plt.xlabel('x')
    plt.ylabel('y')
    
    # 设置坐标轴刻度线 
    # Tick X 范围 (-1,2) Tick Label(-1,-0.25,0.5,1.25,2) 刻度数量 5 个
    new_ticks=np.linspace(-1,2,5)
    plt.xticks(new_ticks)
    
    # Tick Y 范围(-2.2,-1,1,1.5,2.4) ,Tick Label (-2.2, -1, 1, 1.5, 2.4) 别名(下面的英文)
    plt.yticks([-2.2,-1,1,1.5,2.4],
              [r'$really\ bad$',r'$bad$',r'$normal$',r'$good$',r'$really\ good$'])
    
    
    # 设置坐标轴 gca() 获取坐标轴信息
    ax=plt.gca()
    # 使用.spines设置边框:x轴;将右边颜色设置为 none。
    # 使用.set_position设置边框位置:y=0的位置;(位置所有属性:outward,axes,data)
    ax.spines['right'].set_color('none')
    ax.spines['top'].set_color('none')
    
    # 移动坐标轴
    # 将 bottom 即是 x 坐标轴设置到 y=0 的位置。
    ax.xaxis.set_ticks_position('bottom')
    ax.spines['bottom'].set_position(('data',0))
    
    # 将 left 即是 y 坐标轴设置到 x=0 的位置。
    ax.yaxis.set_ticks_position('left')
    ax.spines['left'].set_position(('data',0))
    
    # 设置标签
    ax.set_title('y = x^2',fontsize=14,color='r')
    
    # 显示图像
    plt.show()
    复制代码

    运行结果

    最后,附上 matplotlib 整体结构图(图片来自网络):

    推荐阅读

    来北京的日子

    这么多年都白学了,原来是方法没有用对

    贝斯狸的 Python 之旅 -- 深入切片操作及原理

    墙裂推荐 Anaconda | 安利 Python IDE

    编程界的半壁江山

    好书推荐

    统计学习方法

    最近正在研究机器学习中的算法和公式,朋友给我推荐了这本书,经过一番考察,总算是觉得这本书对得起读者,也值得推荐。

    李航,日本京都大学电气工程系毕业,日本东京大学计算机科学博士。曾任职于日本 NEC 公司中央研究所,微软亚洲研究院高级研究员及主任研究员,现任华为诺亚方舟实验室首席科学家。北京大学、南开大学、西安交通大学客座教授。研究方向包括信息检索、自然语言处理、统计机器学习及数据挖掘。

    豆瓣简介

    详细介绍支持向量机、Boosting、最大熵、条件随机场等十个统计学习方法。

    思维力:高效的系统思维

    王世民,深圳尔雅 CEO,YouCore 创始人,知乎专栏“框架的力量”作者。

    一个矛盾体。心里挺鄙视学历,但不小心念了名校、拿了硕士;崇尚个人自由,但又创办公司绑死了自己;特不喜欢教书,但现在干着培训。一个不安分的人。短短十来年,当过苦逼的IT码农、做过装逼的咨询顾问、现在干着土鳖的民企老板。

    这本书对我的思维能力提升帮助蛮大的,书中提供的很多学习方法都值得借鉴,自从阅读了本书以后,我也喜欢画脑图总结,不断尝试系统学习。我强烈建议读者们去看看【框架的力量】的专栏,对提高你的思维和学习效率很有帮助。

    豆瓣简介

    “真正有用”正是这本书不同于其它思维书籍之处!

    你有没有遇到过以下窘境——分析时想不明白、表达时说不清楚、学习时学不快速?你想不想全面提升你的思维能力?你知道问题解决技巧和表达技巧有哪些吗?

    此书中有你想知道的答案。

    本书分为 3 个部分共 10 章,各章可自成体系地解决一个问题,同时整书又形成一套体系化的系统思维。

    第一部分探秘了“框架”力量的根源。万事万物的本质其实是一个个的系统,而掌握了系统的“框架”也就把握了事物的本质。没有什么问题是不能利用框架解决的,如果一个不行,那就两个。

    第二部分将运用“框架”解决问题分解为五个步骤——界定问题、构建框架、明晰关键、高效执行及检查调整,并精炼了相应的优秀思考方法和工具。此外,还传授了在有限时间、有限资源限制下高质量地解决问题的秘诀——“假设思考”。

    第三部分传授如何运用“框架”有效表达。逐层递进地演示了自上而下表达的魅力,并用丰富的图表阐述了何为“形象化表达”。

    对于想全面提升思维能力的读者,建议按照本书章节顺序阅读;对于迫切想寻求具体问题解决技巧或表达技巧的读者,也可以直接阅读相应章节。

    想要书籍的请在后台留言【180803】获取这两本书的 PDF 版,【思维力:高效的系统思维】附视频教程,希望在学习的道路上,我们能少走弯路,我会尽量推荐自己读过的好书,希望读者们能跟着我一起多读书,读好书。

    展开全文
  • 这里我是利用python中的matplotlib库实现的图线的拟合。主要对于matplotlib的使用可以参照博客:webary  如果要绘制三维图像可以参考博客:python绘制三维图 具体实现: 接下来,就是对具体数据进行绘图了。比如...
  • 运行环境 : python 3.6.0 用 Matplotlib 的 scatter 方法绘制散点图 核心代码 : # -*- encoding: utf-8 ...# @Function : 本代码为利用 Matplotlib 库画正余弦函数 import numpy as np from matplotlib impor...
  • 利用python中matplotlib库,实现绘制牛顿插值、拉格朗日插值、三次样条插值函数图像。 随机在图像上产生5个随机点,用三种插值方式求函数,并用python中matplotlib绘制在图像上
  • 在学习这本书“中文版”的时候,第二章2.2.2中利用matplotlib库函数scatter函数绘制彩色图像 >>> ax.scatter(da[:,1],da[:,2],15.0*array(lab),15.0*array(lab)) Traceback (most recent call last):
  • 在实习的时候碰到了很多CDF(累积分布函数)图像,想自己绘制一下CDF但发现Excel好像没有绘制曲线图的功能,所以正好学习一下Python图标绘制Matplotlib的使用。有关CDF的定义可以参考维基百科词条【Cumulative ...
  • 本文主要讲述利用matplotlib包进行多图像绘制。1.首先看第一个函数matplotlib.pyplot.subplot,这个函数是为了在一张图里放置多个子图。subplot(nrows, ncols, index, **kwargs)第一个参数为子图行的数目第二个...
  • [计算方法作业]利用python中matplotlib实现绘制二分法、牛顿法、弦截法图像,利用二分法、牛顿法、弦截法求方程的根,用python中matplotlib绘制函数图像
  • 这一行代码的实质是利用matplotlib包对图片进行绘制绘制成功后,返回一个matplotlib类型的数据。因此,我们也可以这样写: import matplotlib.pyplot as plt plt.imshow(img) imshow()函数格式为: ...
  • 这一行代码的实质是利用matplotlib包对图片进行绘制绘制成功后,返回一个matplotlib类型的数据。因此,我们也可以这样写: import matplotlib.pyplot as plt plt.imshow(img) imshow()函数格式为: ...
  • import matplotlib.pyplot as plt import numpy as np x=np.linspace(0.05,10,1000) y=np.cos(x) plt.plot(x,y,ls="-",lw=2,label="plot figure") plt.legend() plt.show()
  • 利用Python的Matplotlib库可以实现多元函数的可视化,以下以一段代码说明: 第三方库需求 Matplotlib(数据可视化) numpy(数学计算库) 代码 from matplotlib import pyplot as plt import numpy as np from mpl_...
  • imshow()是对图像进行绘制 imshow()函数格式为:  matplotlib.pyplot.imshow(X, cmap=None)  X: 要绘制图像或数组。  cmap: 颜色图谱(colormap), 默认绘制为RGB(A)颜色空间。 实例: import matplotlib....
  • 最近因写论文,需要绘制一些激活函数图像,网上下载的图像清晰度不够,而且还涉及版权问题,于是自己用python自己画了几个,需要显示哪个把注释去掉就行了。 import numpy as np import matplotlib.pyplot as plt ...
  • 上一次我们讲解了利用Python的2D绘图库matplotlib绘制函数图像(用Python画函数图像),下面我们来讨论如何绘制带参数的函数图像。下面我们用正态分布的概率密度在做例子(概率密度的图像为正态分布曲线),其概率密度...
  • 由于学习的需要,利用python和opencv实现简单的灰度图直方图绘制及其均衡化 。代码如下import cv2 as cv import numpy as np from matplotlib import pyplot as plt #画直方图 def zhifangtu(image): a = [0]*256...
  • matplotlib利用Figure创建的figure对象,第一次用figure.axes.plot绘制时可以显示图像,修改数据后再利用axes.plot函数绘制图像不改变,解决办法就是在最后加上figure.draw()函数 matplotlib.figure.Figure中的...
  • 问题1: 程序,如下 from sympy import * f = symbols('f', cls=Function) ...1.利用python的Sympy库求解微分方程的解 y=f(x),并尝试利用matplotlib绘制函数图像 程序,如下 from sympy import
  • python 图像绘制

    2018-03-26 14:53:24
    io.imshow(img) 这一行代码的实质是利用matplotlib包对图片进行绘制绘制成功后,返回一个matplotlib类型的数据。因此,我们也可以这样写:import matplotlib.pyplot as plt plt.imshow(img)imshow()函数格式为:...
  • 一、简单介绍Matplotlib1、Matplotlib是一个强大的Python绘图和数据可视化的工具包2、安装方法:pip install matplotlib 3、引用方法:import matplotlib.pyplot as plt4、绘图函数:plt.plot()5、显示图像:plt....
  • 实际上前面我们就已经用到了图像绘制,如:io.imshow(img)这一行代码的实质是利用matplotlib包对图片进行绘制绘制成功后,返回一个matplotlib类型的数据。因此,我们也可以这样写:importmatplotlib.pyplot as ...
  • 这一行代码的实质是利用matplotlib包对图片进行绘制绘制成功后,返回一个matplotlib类型的数据。因此,我们也可以这样写: import matplotlib.pyplot as plt plt.imshow(img) imshow()函数格式为: ...
  • 实际上前面我们就已经用到了图像绘制,如:io.imshow(img)这一行代码的实质是利用matplotlib包对图片进行绘制绘制成功后,返回一个matplotlib类型的数据。因此,我们也可以这样写:importmatplotlib.pyplot as ...
  • 实际上前面我们就已经用到了图像绘制,如:io.imshow(image)这一行代码的实质是利用matplotlib包对图片进行绘制绘制成功后,返回一个matplotlib类型的数据。因此,我们也可以这样写:import matplotlib.pyplot ...
  • python数字图像处理(5):图像绘制

    万次阅读 多人点赞 2016-07-29 11:36:51
    这一行代码的实质是利用matplotlib包对图片进行绘制绘制成功后,返回一个matplotlib类型的数据。因此,我们也可以这样写: import matplotlib.pyplot as plt plt.imshow(img) imshow()函数格式为: matplotlib...

空空如也

空空如也

1 2 3
收藏数 57
精华内容 22
关键字:

利用matplotlib绘制函数图像