zoukankan      html  css  js  c++  java
  • matplotlib画图总结--常用功能

    0、内容范围

        多曲线图、图例、坐标轴、注释文字等。

    1、曲线图

      多曲线图、图例、网格、坐标轴名称、图标名、坐标轴范围等。

    from matplotlib import pyplot as plt
    import numpy as np
    
    x = np.linspace(-np.pi, np.pi, 200, endpoint=True)
    c, s = np.cos(x), np.sin(x)
    plt.xlim(-np.pi, np.pi)
    # p1 = plt.plot(x,c,'r', label = 'cos')
    # p2 = plt.plot(x,s,'b', label =  'sin')
    p1 = plt.plot(x,c,'r')
    p2 = plt.plot(x,s,'b')
    plt.xlabel('x')
    plt.ylabel('y')
    plt.title('cos and sin')
    plt.legend( ['cos', 'sin'])
    plt.grid(True)
    plt.show()

     知识点:

    1)一个图里绘制条曲线

    方法1:

    plt.plot(x,c,'r', x,s,'b')

    方法2:

    p1 = plt.plot(x,c,'r')

    p2 = plt.plot(x,s,'b')

    2)给图添加图例

    方法1:

     p1 = plt.plot(x,c,'r', label = 'cos')

     p2 = plt.plot(x,s,'b', label =  'sin')

    plt.legend()

    方法2:

    p1 = plt.plot(x,c,'r')

    p2 = plt.plot(x,s,'b')

    plt.legend( ['cos', 'sin'])

    推荐使用方法1,因为方法2必须注意添加曲线的顺序。

     2、柱状图

       学习柱状图、为图形添加字符坐标轴.

    import numpy as np
    import matplotlib.pyplot as plt
    
    N = 5
    menMeans = (20, 35, 30, 35, 27)
    womenMeans = (25, 32, 34, 20, 25)
    menStd = (2, 3, 4, 1, 2)
    womenStd = (3, 5, 2, 3, 3)
    ind = np.arange(N)    # the x locations for the groups
    width = 0.35       # the width of the bars: can also be len(x) sequence
    
    p1 = plt.bar(ind, menMeans, width, yerr=menStd, label='men')
    p2 = plt.bar(ind, womenMeans, width, bottom=menMeans, yerr=womenStd, label='women')
    
    plt.ylabel('Scores')
    plt.title('Scores by group and gender')
    plt.xticks(ind, ('G1', 'G2', 'G3', 'G4', 'G5'))
    plt.yticks(np.arange(0, 81, 10))
    plt.legend(loc='upper right')
    plt.show()

     为什么会两个图层叠?

    p1 = plt.bar(ind, menMeans, width, yerr=menStd, label='men')
    p2 = plt.bar(ind, womenMeans, width, bottom=menMeans, yerr=womenStd, label='women')

    bar函数的x坐标一样,并且y坐标值是bottom=menMeans,所以第二个图会堆叠在第一个图上面。

    下面实现2条柱状图。

    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()
    
    plt.show()

     x轴的坐标不是数子,实现方法如下,先设定坐标轴的tick,然后把ticklabel改为字符值。

    ax.set_xticks(x)

    ax.set_xticklabels(labels)

    如果需要实现水平柱状图,则使用ax.barh(y_pos, performance, xerr=error, align='center')函数。

     

    3、添加文字、注释、箭头指示、花式文字

    其中,text 函数可以做文本注释,且支持 LaTeX 格式,可以在图例中写公式。

    text(x,y,string,fontsize=15,verticalalignment="top",horizontalalignment="right")

    x = np.arange(0, 10, 0.1)
    plt.plot(x, x**2)
    plt.grid(True)  # 设置网格线
    plt.text(5,50, "TEXT1")
    plt.show()

    花式文本:

    You can put a rectangular box around the text instance (e.g., to set a background color) by using the keyword bbox. bbox is a dictionary of Rectangle properties. For example:

    >>> text(x, y, s, bbox=dict(facecolor='red', alpha=0.5))

    import matplotlib.pyplot as plt
    import numpy as np
    
    plt.text(0.6, 0.5, "Text", size=50, rotation=45, ha="center", va="center", color='b')
    plt.text(0.3, 0.5, "Text", size=25, rotation=10, ha="center", va="center", bbox=dict(boxstyle="round",ec=(1, 0.5, 0.5),fc=(1., 0.8, 0.8),)) #颜色ec、fc
    
    plt.plot()
    plt.show()

    添加箭头和说明信息

    plt.annotate('value of 5**2', xy=(5, 25), xytext=(6, 26), arrowprops=dict(facecolor='black', shrink=0.05))

  • 相关阅读:
    20145237 《信息安全系统设计基础》第八周学习总结
    实验二 20145237 20155226 2015234 实验报告 固件程序设计
    实验一(开发环境的熟悉)问题总结
    实验二(固件设计)问题总结
    实验五(简单嵌入式WEB服务器实验)问题总结
    实验三( 实时系统的移植)问题总结
    实验四(外设驱动程序设计)问题总结
    20145235《信息安全系统设计基础》课程总结
    教材配套项目——缓冲区实验
    20145235 《信息安全系统设计基础》第十四周学习总结
  • 原文地址:https://www.cnblogs.com/pingwen/p/12027605.html
Copyright © 2011-2022 走看看