• matplotlib笔记2


    颜色和样式

    八种内建默认颜色缩写
    b:blue g:green r:red c:cyan m:magenta y:yellow k:black w:white
    其它颜色表示方法可以参照百度给的值
    https://baike.baidu.com/item/%E5%8D%81%E5%85%AD%E8%BF%9B%E5%88%B6%E9
    %A2%9C%E8%89%B2%E7%A0%81/10894232?fromtitle=%E9%A2%9C%E8%89%B2%E5%8D
    %81%E5%85%AD%E8%BF%9B%E5%88%B6&fromid=15455510&fr=aladdin
    灰色阴影
    html 十六进制
    RGB元组
     1 import numpy as np
     2 import matplotlib.pyplot as plt
     3 
     4 y=np.arange(1,5)
     5 # plt.plot(y,'--',marker='o',color='g')
     6 # '--',marker='o',color='g',分别表示线型,点型,颜色
     7 
     8 # plt.plot(y+1,'-.',marker='D',color='0.5')
     9 # plt.plot(y+2,':',marker='^',color='#FF00FF')
    10 # plt.plot(y+3,'-',marker='p',color=(0.1,0.2,0.3))
    11 
    12 # 可以将颜色,点型,线型写成一个字符串
    13 plt.plot(y,'cx--')
    14 
    15 plt.show()
    面向对象 VS Matlab Style

     pyplot:经典高层封装,到目前为止,我们所用的都是pyplotpylab:将Matplotlib和NumPy合并的模块,模拟Matlab的编程环境面向对象的方式:Matplotlib的精髓,更基础和底层的方式

    pyplot:简单易用。交互使用方便,可以根据命令实时作图。但底层定制能力不足

    pylab:完全封装,环境最接近Matlab。不推荐使用

    面向对象(Object-Oriented)的方式:接近Matplotlib基础和底层的方式。难度稍大。

    但定制能力强而且是Matplotlib的精髓

    总结:实战中推荐,根据需求,总和使用pyplot和面向对象的方式,显示导入numpy

    常用模块导入代码:

    import matplotlib.pyplot as plt

    import numpy as np

     1 import matplotlib.pyplot as plt
     2 import numpy as np
     3 
     4 x = np.arange(0, 10, 1)
     5 y = np.random.randn(len(x))
     6 
     7 fig = plt.figure()
     8 # 面向对象方法,要先建立一个画布
     9 
    10 ax = fig.add_subplot(111)
    11 # 相当于将要在画布上建立一个一行一列的图,最后数字1表示要画的图在第一个位置
    12 # ax = fig.add_subplot(221)
    13 
    14 f1  = plt.plot(x, y)
    15 
    16 t = ax.set_title('object oriented')  # 为图命名
    17 
    18 # plt.plot(x, y)
    19 plt.show()

    多图

    要创建多个画布即应该在代码中每画一个图就需要插入fig=plt.figure()如下代码

     1 import matplotlib.pyplot as plt
     2 # import numpy as np
     3 
     4 figl=plt.figure()
     5 ax1=figl.add_subplot(111)
     6 ax1.plot([1,2,3],[3,2,1])
     7 
     8 fig2=plt.figure()
     9 ax2=fig2.add_subplot(111)
    10 ax2.plot([1,2,3],[3,2,5])
    11 
    12 plt.show()

    网格

    在画图的时候可以添加背景网格的形式增加图的可读性

     1 import matplotlib.pyplot as plt
     2 import numpy as np
     3 
     4 x = np.arange(0,10,1)
     5 fig = plt.figure()
     6 ax = fig.add_subplot(111)
     7 plt.plot(x,x*2)
     8 
     9 ax.grid(color='g')
    10 # 这是要给所画的图添加网格的代码行
    11 
    12 plt.show()

    图例

    图例是图表中一种很重要的说明方式,在matplotlib中也可以添加图例

     1 import matplotlib.pyplot as plt
     2 import numpy as np
     3 
     4 x=np.arange(1,11,1)
     5 
     6 # 添加图例的第一种方式
     7 # plt.plot(x, x*2, label='Normal')
     8 # plt.plot(x, x*3, label='Fast')
     9 # plt.plot(x, x*4, label='Faster')
    10 
    11 plt.plot(x, x*2)
    12 plt.plot(x, x*3)
    13 plt.plot(x, x*4)
    14 plt.legend(['Normal','Fast','Faster'])
    15 plt.legend(loc=0)  # 图例放置最优位置,官网上有更多的相关解释
    16 plt.legend(ncol=3)  # 图例分三列放
    17 
    18 plt.show()

    坐标轴范围

     1 import matplotlib.pyplot as plt
     2 import numpy as np
     3 
     4 x = np.arange(-10,11,1)
     5 
     6 plt.plot(x,x*x)
     7 
     8 # plt.axis([-5,5,20,60])  # 前两个数字表示x轴范围,后两个数字表示y轴范围
     9 plt.axis([-10,10,0,100])
    10 # plt.xlim([-5,5])  # 可以只改变x轴范围y轴不变
    11 # plt.ylim([0,60])
    12 # plt.xlim(xmin=-5,xmax=5)  # 与plt.xlim([-5,5]) 效果一样
    13 plt.xlim(xmin=-5)  # 只改变x轴一端的范围
    14 plt.show()

    坐标轴刻度

     1 import matplotlib.pyplot as plt
     2 import matplotlib as mpl
     3 import numpy as np
     4 import datetime
     5 x = np.arange(1,11,1)
     6 plt.plot(x,x)
     7 ax=plt.gca()  # 表示获取当前的坐标轴,对坐标轴操作需要添加此行
     8 
     9 # ax.locator_params('x',nbins=5)
    10 # 给x轴添加刻度
    11 
    12 ax.locator_params('y', nbins=5)
    13 # 给y轴添加刻度
    14 
    15 # 下面是x轴的日期刻度标注方法
    16 fig=plt.figure()
    17 start=datetime.datetime(2015,1,1)
    18 stop=datetime.datetime(2016,1,1)
    19 delta=datetime.timedelta(days=1)
    20 
    21 dates = mpl.dates.drange(start,stop,delta)
    22 y=np.random.rand(len(dates))
    23 ax=plt.gca()
    24 ax.plot_date(dates,y,linestyle='-',marker='')
    25 
    26 date_format=mpl.dates.DateFormatter('%Y-%m')
    27 ax.xaxis.set_major_formatter(date_format)  # xaxis表示在x轴添加日期刻度
    28 fig.autofmt_xdate()  # 由于日期的数字过长,所以需要matplotlib自动优化摆放方式
    29 
    30 plt.show()

    添加坐标轴

     1 import matplotlib.pyplot as plt
     2 import numpy as np
     3 
     4 x=np.arange(2,20,1)
     5 y1=x*x
     6 y2=np.log(x)
     7 
     8 # 这是添加y轴
     9 # plt.plot(x,y1)
    10 # plt.twinx()  #创建一个双胞胎x轴
    11 # plt.plot(x,y2,'r')
    12 
    13 # 这是添加x轴
    14 plt.plot(y1, x)
    15 plt.twiny() #创建一个双胞胎y轴
    16 plt.plot(y2, x, color='r')
    17 
    18 
    19 # 这是用面向对象的方式添加坐标轴
    20 # fig = plt.figure()
    21 # ax1 = fig.add_subplot(111)
    22 # ax1.plot(x,y1)
    23 # ax1.set_ylabel('Y1')
    24 # ax2=ax1.twinx()
    25 # ax2.plot(x,y2,'r')
    26 # ax2.set_ylabel('y2')
    27 # ax1.set_xlabel('Compare Y1 and Y2')
    28 
    29 
    30 
    31 plt.show()


  • 相关阅读:
    SPOJ 10628 求树上的某条路径上第k小的点
    zoj 2112 动态区间求第k大
    SPOJ QTREE 树链剖分
    FZU 2082 过路费
    bzoj 1036 Tree Count
    POJ 3237
    C
    G
    E
    B. Split a Number(字符串加法)
  • 原文地址:https://www.cnblogs.com/yang901112/p/11420794.html
Copyright © 2020-2023  润新知