• Matplotlib的基本用法


    Matplotlib有两种接口,一种是matlab风格接口,一种是面向对象接口。在这里,统一使用面向对象接口。因为面向对象接口可以适应更复杂的场景,在多图之间进行切换将变得非常容易。

    首先导入matplotlib:from matplotlib import pyplot as plt。plt是最常用的接口。

    一. 创建图像和坐标轴

    fig=plt.figure()   ---   创建图像

    ax=plt.axes()   ---   创建坐标轴

    在matplotlib中,可以把figure看成是一个容纳各种坐标轴,图像,文字和标签的容器,axes是一个带有刻度和标签的矩形。我们通常用变量fig表示一个图形实例,用变量ax表示一个坐标轴实例。

    对于层级概念的详细介绍,可查看:https://www.jianshu.com/p/78ba36dddad8以及https://www.cnblogs.com/kallan/p/7365472.html

    另外,也可以通过fig,ax=plt.subplots()命令一次性建立图像和坐标轴。

    二. 设置绘图风格

    plt.style.use('classic')   ---   选择经典风格

    使用此命令后,其他图像绘制也都会使用这种风格。

    matplotlib.rcdefaults命令恢复默认设置。

    可以用plt.style.available命令查看所有可用的风格。

    * 如果只需要临时更换至另一种风格,则用with plt.style.context('stylename'):

    三. 显示图像

    plt.show()

    因为一个python session只能使用一次plt.show(),因此通常把此命令放在脚本的最后。

    四. 保存图像

    fig.savefig('figure_name.png')   ---   在工作文件夹中存入一个figure_name.png文件

    注意:此命令必须放在plt.show()之前,否则保存的将会是空白图像。

    可以通过fig.canvas.get_supported_filetypes()查看系统支持的文件格式。

    五. 调整坐标轴上下限

    ax.set_xlim(min,max)   ---   设置x轴上下限

    ax.set_ylim(min,max)   ---   设置y轴上下限

    六. 设置图像标题

    ax.set_title("title_name")   ---   设置名为title_name的标题

    七. 设置坐标轴标签

     ax.set_xlabel("label_name")   ---   设置x轴标签

     ax.set_ylabel("label_name")   ---   设置y轴标签

    八. 设置图例

     ax.legend([line1,line2,line3],["label1","label2","label3"],loc='upper left')   ---   给三条线分别设置图例,位置在左上角

     

    九. 一次性设置坐标轴上下限,坐标轴标签和标题

    ax.set(xlim=(min,max), ylim=(min,max), xlabel="label_name", ylabel="label_name", title="title_name")

    十. 设置颜色条

    fig.colorbar(label="label_name")   ---   此处的label为颜色条的标签

    十一. 添加文字

    ax.text(x,y,s)   ---   在(x,y)坐标处添加文字(s)

    十二. 添加注释

    ax.annotate("annotation",xy=(1,2),xycoords='axes fraction',xytext=(2,3),textcoords='axes fraction',arrowprops=dict(arrowstyle="->"))   ---   (x,y)坐标处为箭头的位置,xycoords为箭头的坐标体系,xytext为注释文字起始的坐标,textcoords为注释文字的坐标体系,arrowstyle为箭头样式

    十三. 隐藏边框

    一开始在想怎么去除y轴,在网上查了半天都是把坐标轴刻度去掉的那种(也就是第十四条那种),最后发现原来我要去除的是边框。。。

    ax.spines["top"].set_visible(False)   ---   隐藏上边框

    ax.spines["bottom"].set_visible(False)   ---   隐藏下边框

    ax.spines["left"].set_visible(False)   ---   隐藏左边框

    ax.spines["right"].set_visible(False)   ---   隐藏右边框

    十四. 隐藏坐标轴(刻度和刻度值)

    ax.set_xticks([ ])   ---   隐藏x轴刻度和刻度值

    ax.set_yticks([ ])   ---   隐藏y轴刻度和刻度值

     *如果只需隐藏刻度值,同时保留刻度的话,使用ax.xaxis.set_major_formatter(plt.NullFormatter())命令和ax.yaxis.set_major_formatter(plt.NullFormatter())命令。

    十五. 设置坐标轴刻度和刻度标签

    ax.set_xticks([1,2,3])   ---   设置x轴刻度为1,2,3

    ax.set_yticks([1,2,3])   ---   设置y轴刻度为1,2,3

    ax.set_xticklabels(["one","two","three"])   ---   设置x轴刻度标签为one,two,three

    ax.set_yticklabels(["one","two","three"])   ---   设置y轴刻度标签为one,two,three

    十六. 创建多个图像

    大图里放小图(inset):ax1=fig.add_axes([left, bottom, width, height])   --- [left, bottom, width, height]用来设置新坐标轴的位置和大小

    规则网格图(regular grid of plots):fig,ax=plt.subplots(num_of_rows,num_of_columns,sharex=True,sharey=True)   ---   创建几行几列的网格图后,可以用ax[0].plot(),ax[1].plot()等等相继在各网格上画图

    不规则网格图(irregular grid of plots):grid=plt.GridSpec(2,3); ax1=fig.add_subplot(grid[0,1:])   ---   先设置一个二行三列的网格,再在此网格上的第一行,第二到第三列添加坐标轴,可继续添加,以此类推

    fig.subplots_adjust(hspace=0.4,wspace=0.6)调整子图间的距离。

    十七. 设置显示中文和负号

    a. 下载字体:msyh.ttf (微软雅黑),放在matplotlib的字体文件夹内:Libsite-packagesmatplotlibmpl-datafonts tf

    b. 进入Python安装目录下的Libsite-packagesmatplotlibmpl-data目录,打开matplotlibrc文件,在font.sans-serif后添加微软雅黑字体(Microsoft YaHei),修改axes.unicode_minus为False

    c. 删除.matplotlib/cache里面的两个缓存字体文件

    d. 重启Python

    c. 在脚本里写上该命令:matplotlib.rcParams['font.sans-serif']='Microsoft Yahei'或在需要显示中文的地方加上参数:fontproperties='Microsoft Yahei'

    以上只是Matplotlib的一些基本用法,如需使用更深入的用法或设置更多参数,请查看官网。

    下面列出一些用matplotlib画的基本图形。

    一. 画柱形图/条形图

    ax.bar()和ax.barh()

    例子:Matplotlib学习---用matplotlib画柱形图,堆积柱形图,横向柱形图(barchart)

    二. 画散点图/气泡图

    ax.plot()和ax.scatter()

    例子:Matplotlib学习---用matplotlib画散点图,气泡图(scatterplot, bubble chart)

    三. 画折线图

    ax.plot()

    例子:Matplotlib学习---用matplotlib画折线图(line chart)

    四. 画直方图/密度图

    ax.hist()

    例子:Matplotlib学习---用matplotlib画直方图/密度图(histogram, density plot)

    五. 画饼图/面包圈图

    ax.pie()

    例子:Matplotlib学习---用matplotlib画饼图/面包圈图(pie chart, donut chart)

    另外,发现有一个比较好的介绍matplotlib基本功能的网站:http://www.labri.fr/perso/nrougier/teaching/matplotlib/

  • 相关阅读:
    【转】Android版本升级同时Sqlite数据库的升级及之前数据的保留
    MC 在1分钟图拿出5分钟,15分钟,30分钟,1小时的K线
    MC 自己平均
    MT4 做指标模版
    MQL5 获取最后一单 利润
    MT5基础知识
    DDE复盘流程
    安装lnmp(linux nginx mysql php)
    centos 7 切换运行模式
    安装 flash player
  • 原文地址:https://www.cnblogs.com/HuZihu/p/9390945.html
Copyright © 2020-2023  润新知