zoukankan      html  css  js  c++  java
  • https://www.cnblogs.com/xubing-613/p/5895948.html

     最近总是需要用matplotlib绘制一些图,由于是新手,所以总是需要去翻书来找怎么用,即使刚用过的,也总是忘。所以,想写一个入门的教程,一方面帮助我自己熟悉这些函数,另一方面有比我还小白的新手可以借鉴,大神就绕路吧。这篇文章是根据《利用Python进行数据分析》总结出来的,不是很全面,但是作为入门,足够了。

    首先,需要能启动IPython 交互界面吧,这个如果还没有启动的话,就自行百度吧。

    如果安装了Anaconda,那么以这种方式启动IPython吧。

     

    这样会将IPython配置为使用你所指定的matplotlib GUI 后端(Tk,wxPython,PyQt,Mac OS X native,GTK)。【虽然不知道这些都是些什么,不过打开pylab就够用了】

    matplotlib 不是太长了吗,我们通常引入这样的约定:

    import matplotlib.pyplot as plt

    就是个缩写嘛,大多数高端人员也遵循这个约定,咱就服从吧。

    首先,我们来绘制一个figure对象。

    立马就会生成一个这样的窗口:

    好,这是第一步。

    但是不能通过空figure绘图。必须使用add_subplot()创建一个或多个subplot才行。

    看以上三行代码,figure变成了这样:

    这三行代码的意思是:图像是2X2的,且当前选中是4个中的第n个。(222)就是2X2 中的第二2,(2,2,3)就是2X2中的第三个。可分割也可不分割,当超过10的话需要分割了吧。

    好,第二步也成功做完了。接下来,发出一条绘图命令。如plt.plot([1.5, 2, 4, -2, 1.6])   #绘制几个点连接

    我们来试一下。 

     恩,此时matplotlib就会在最后一个用过的subplot(如果没有则创建一个)上面进行绘制。

    这几步完成的还不错吧,那下面我们再进一步探索。

    *************************************************分割线****************************************************

    我们运行一下这两行代码:

    from numpy.random import randn #导入随机模块
    plt.plot(randn(50).cumsum(), 'k--')

    其实就是在0到50随机生成一个数组,然后绘制在最后一个用过的subplot里面,注意是线段类型,虚线。

    那如何绘制图像在其他的subplot里面呢?下面就演示如何做。

    ax1.hist(randn(100), bins  = 20, color = 'k', alpha = 0.3) 

    ax2.scatter(np.arange(30), np.arange(30)  + 3 * randn(30))

     

    至此,应该能非常熟练的在figure对象中绘图了吧。

    还可以在matplotlib的文档中找到各种图表类型。

    **********************************************分割线**********************************************************

    由于根据特定布局创建Figure和subplot是一件很常见的任务,于是便出现了一个更为方便的方法。

    fig, axes = plt.subplots(2, 3)

    这样,一步就完成上节两步完成的工作。

    -----------------------------------------------------------------------

    pyplot.subplots有几个选项

    nrows:subplot的行数

    ncols:subplot的列数

    sharex:所有subplot共享x轴刻度

    sharey:所有subplot共享Y轴刻度

    subplot_kw:用于创建各subplot的关键字字典

    **fig_kw:创建figure时的其他关键字,如plt.subplots(2,2,figuresize=(8,6))

    -------------------------------------------------------------------------

    加了参数,共享x轴y轴。

    我们再试着调整一下subplot周围的边距。

    Figure有一个顶级函数subplot_adjust。

    subplots_adjust(left = None, bottom = None, right  = None, top = None, wsapce = None, hspace = None )

    wspace 和 hspace是控制宽度和高度的百分比。下面将间距收缩到了0.

    又是新知识吧。接下来,学习颜色和线型。

     ************************************分割线**************************************************

     新建一个fig

    fig = plt.plot()

    再新建一个fig

     data = randn(30).cumsum()

    plt.plot(data, 'k--', label = 'Default')

    plt.plot(data, 'k-', drawstyle = 'steps-post', label = 'steps-post')

    plt.legend(loc='best')  #在合适的位置放置图例。

    设置标题,轴标签,刻度以及刻度标签。

    fig = plt.figure()

    ax = fig.add_subplot(111)

    ax.plot(randn(1000).cumsum())

     

    随机漫步。我们来给上图添加标签。

    ticks = ax.set_xtickets([0, 250, 500, 750, 1000])

    可以看出,x标签变成我们制定的标签。y轴标签可想而知了。

    再来设置title

    ax.set_title('My First matplotlib plot')

    再用set_xlabel为X轴设置一个名称。

    ax.set_xlabel('Stages')

    Y轴的跟X轴几乎是一样的。再小白也能看懂吧。

    添加图例(legend):

     上面两张图是一样的,后面只是上面图放大了,注意图例的位置。

    ax.legend(loc = 'best')  #会选择一个最不碍事的位置。

    要从图例中去除一个或多个元素,不传入label或传入lable = '_nolegend_' 

    还有一些这样的选项。

     ***************************************************分割线*****************************************************

    又上一层楼。 嘻嘻。

    好了,一口气写这么些,后面的再慢慢更新吧。

    今天接着入门,白小白可以看,大神绕路。

    ***************************************************分割线*****************************************************

    今天接着入门,白小白可以看,大神绕路。

    今天以画图开始。

    画个长方形,三角形,圆形(椭圆)。

    Matplotlib有一些表示常见图形的对象,这些对象被称为块(patch)。完整的集合位于matplotlib.patches。

    fig = plt.figure()

    ax = fig.add_subplot(111)

    rect = plt.Rectangle((0.2,0.75), 0.4, 0.15, color = ‘r’, alpha = 0.3)#左下起点,长,宽,颜色,α

    circ = plt.Circle((0.7,0.2), 0.15, color = ‘b’, alpha = 0.5)#圆心,半径,颜色,α

    pgon = plt.Polygon([[0.15, 0.15], [0.35, 0.4], [0.2, 0.6]], color = ‘g’, alpha = 0.5 )#顶点坐标颜色α

    α表示的是图表的填充不透明度。在(0,1)之间。

    ax.add_patch(rect)

    ax.add_patch(circ)

    ax.add_patch(pgon)

     

    补充一个:如何在图上指定位置添加文本、箭头,或其他图形呢?

    答:可以通过text、arrow、annotate等函数进行添加。下面看一个添加文本的例子。

    ax.text(0.7, 0.6, ‘Hello World!’, family = ‘monospace’, fontsize = 10)

     

    可以看到图片里面指定位置有我们添加的文字信息。

    那生成了图表文件怎么保存呢?

    利用plt.savefig可以将当前图表保存到文件。

    Plt.savefig(‘figpath.svg’, dpi = 400, bbox_inches = ‘tight’ )

    #文件类型是通过文件扩展名推断出来的,可以保存为.pdf.

    Dpi是 ‘每英寸点数’分辨率,bbox_inches可以剪除当前图表周围的空白部分

     

    保存到了一个.pdf的文件中。

    Figure.savefig有一下选项:

    Fname: 含有路径的字符串或python文件型对象。.pdf,.png根据扩展名推断得出。

    dpi: 图像分辨率(每英寸点数),默认为100

    facecolor,edgecolor: 图像的背景色,默认为‘w’(白色)

    format: 显式设置文件格式(‘png’,‘pdf’,‘svg’,‘ps’,‘eps’…)

    bbox_inches:图表需要保存的部分。如果设置为‘tight’,则尝试剪除图表周围的空白部分。

    ***********************分割线********************************

    Matplotlib实际上是一种比较低级的绘图工具。要组装一章图表,你得用它的各种基础组件才行。下面介绍一下pandas中的绘图函数。简单入门级别的集中。

    ************************分割线*******************************

    线型图:

    Series和DataFrame都有一个用于生成各类图表的plot方法。默认情况下,他们所生成的是线型图。

    s = Series(na.random.randn(10).cumsum(), index = np.arange(0,100,10))

    s.plot()

  • 相关阅读:
    机器学习(深度学习)
    机器学习(六)
    机器学习一-三
    Leetcode 90. 子集 II dfs
    Leetcode 83. 删除排序链表中的重复元素 链表操作
    《算法竞赛进阶指南》 第二章 Acwing 139. 回文子串的最大长度
    LeetCode 80. 删除有序数组中的重复项 II 双指针
    LeetCode 86 分割链表
    《算法竞赛进阶指南》 第二章 Acwing 138. 兔子与兔子 哈希
    《算法竞赛进阶指南》 第二章 Acwing 137. 雪花雪花雪花 哈希
  • 原文地址:https://www.cnblogs.com/zhoug2020/p/8547568.html
Copyright © 2011-2022 走看看