zoukankan      html  css  js  c++  java
  • Python- matplotlib使用方法大全

    Matplotlib使用方法大全

    一:绘制基础的折线图

     1 #encoding:utf-8
     2 import matplotlib.pyplot as plt
     3 
     4 def test1():
     5     # 基础折线图绘制
     6     # 绘制(0,0),(1,1),(2,1),(3,3)四个点连成的折线
     7     x = [0, 1, 2, 3]
     8     y = [0, 1, 1, 3]
     9     plt.plot(x, y)
    10     plt.show()

     二: 修改折线图颜色或者线的形状

    def test2():
        # 修改折线图的颜色 / 线的形状
        x = [0, 1, 2, 3]
        y = [0, 1, 1, 3]
        plt.plot(x, y, "r")  # 修改颜色, rgb=红绿蓝
        plt.plot(x, y, "--")    # 修改线的形状为虚线, 默认为折线"-", "o" 为点 “^" 为三角
        plt.plot(x, y, "g--")    #  一起修改为绿色虚线
        plt.axis([1, 6, 0, 5])   # 修改坐标轴x刻度显示
        plt.show()

     三:只传入一维数据

    plt.plot(x, y)接收点集(x, y),当只输入一维数据的时候默认当做y坐标轴处理,x坐标轴默认为为[0,1,2....]

    def test3():
        y = [1, 1, 1, 1]
        plt.plot(y, "ro")
        plt.show()

    四:当传入list时也会转成numpy.array(性能会好些)

    import numpy as np
    def test4():
        t1 = [1, 5, 1, 5]
        t2 = np.array([5, 1, 5, 1])
        plt.plot(t1, "g-")
        plt.plot(t2, "ro")
        plt.show()

     五:一张图中显示多张图表

      在例4中分别使用了两次plt.plot()进行加载,可以用一条语句

      plt.plot(t1, "b--",t2, "r--")

      

    def test5():
        # 在一张图表中显示多个图表
        x1 = [1, 2, 3, 4]
        y1 = [1, 2, 3, 4]
        x2 = [2, 4, 6, 8]
        y2 = [4, 8, 12, 16]
        plt.plot(x1, y1, "r-", x2,  y2, "g--")
        plt.show()

     六:绘制标准函数sin()与cos()

    def test6():
        # 绘制标准函数曲线: sin()与cos()
        # 绘制f(x)=sin(x) 和g(x)=cos(x) 在x∈[0,20]中的图像
        x = np.arange(0, 20, 0.01)
        plt.plot(x, np.sin(x), "r-", x, np.cos(x), "g--")
        # x坐标轴区间: [0, 20] y坐标轴区间: [-3, 3]
        plt.axis([0, 20, -3, 3])
        plt.show()

    七: 显示背景网格线

    def test7():
        x = np.arange(0, 20, 0.01)
        plt.plot(x, x**2)
        # 设置是否显示网格线
        plt.grid(True)
        plt.show()

     八: 对图表进行标注及对文本属性的设置

    def test8():
        # 增加标注
        x = np.arange(0, 20, 0.01)
        plt.plot(x, x**2)
        # 设置x, y坐标轴的名称
    # 对x坐标轴的文本内容进行设置
    plt.xlabel("Money Earned", color="r", fontsize=20)
    # plt.xlabel("Money Earned") plt.ylabel("Consume Level") # 显示网格 plt.grid(True) # 增加标题 plt.title("Figure.1") # 图内文字 # 指定x坐标轴和y坐标轴,文字本身 plt.text(2.5, 100, "TEXT1") # 箭头指示 # 指定文字, 箭头指定方向,文字显示的坐标, 箭头的属性 plt.annotate("max value", xy=(20, 400), xytext=(12.5, 400), arrowprops=dict(facecolor="black", shrink=0.05),) plt.show()

     对文本属性设置参数简介(https://matplotlib.org/api/text_api.html#matplotlib.text.Text)

    常用参数介绍:

     九: 设置曲线属性

    plt.plot()返回matplotlib.lines.Line2D, 可以通过变量获得并修改曲线Line2D的属性

    def test9():
        # 设置曲线属性
        # plt.plot()返回matplotlib.lines.Line2D,可以通过变量获得并修改曲线Line2D的属性
        x = np.arange(0, 10, 0.01)
        line1, line2 = plt.plot(x, np.sin(x), "-", x, np.cos(x), "--")
        plt.setp(line1, color="r", linewidth="11.0")   # 设置曲线的宽度
        plt.show()

     十: 绘制图形: 圆形,矩形,椭圆

    import matplotlib.patches as patches
    def test10():
        # 绘制圆形
        fig = plt.figure()
        ax1 = fig.add_subplot(111, aspect="equal")    # 1X1一张图中的第一张, equal为等宽显示
        rec = patches.Rectangle((0, 0), 8, 4)    # 顶点坐标(0,0) 宽w=8, 高h=4
        cir = patches.Circle((8, 8), 2)    # 圆心坐标(8,8) 半径r
        ell = patches.Ellipse((2, 8), 6, 3)    # 椭圆左顶点坐标(2, 8) 长轴6 短轴3
        ax1.add_patch(rec)
        ax1.add_patch(cir)
        ax1.add_patch(ell)
        plt.plot()
        plt.show()

     十一: 绘制标准正态分布-直方图

    plt.hist() 绘制直方图

    def test11():
        # 绘制直方图-标准正态分布
        mu, sigma = 0, 1
        x = np.random.normal(mu, sigma, 10000)
        # x: 一维数组,  : 直方图的柱数,默认为10, facecolor: 直方图颜色 alpha: 透明度
        # 返回值: n:直方图向量  bins: 返回各个bin的区间范围  patches: 以list形式返回每个bin里面包含的数据
        plt.hist(x, bins=100, facecolor="g", alpha=0.75)
        plt.text(-3, 250, r'$mu=0, sigma=1$')
        plt.grid(True)
        plt.show()

     十二::绘制散点图

    plt.scatter() 绘制散点图

    def test12():
        # 绘制散点图
        # x: x坐标轴集合  y: y坐标轴集合  c : 散点的颜色数目  s: 散点的大小数目  alpha: 透明度
        x = np.random.normal(0, 1, 1000)
        y = np.random.normal(0, 1, 1000)
        c = np.random.rand(1000)
        s = np.random.rand(100)*100   # 100种大小
        plt.scatter(x, y, c=c, s=s, alpha=0.5)
        plt.grid(True)
        plt.show()

    十三: 显示多个图表

    方法一:

    def test13():
        # 显示多个图表
        names = ['Anime', 'Comic', 'Game']
        values = [30, 10, 20]
        plt.subplot(221)   # 构建2X2张图中的第一张子图
        plt.bar(names, values)    # 统计图
        plt.subplot(222)
        plt.scatter(names, values)
        plt.subplot(223)
        plt.plot(names, values)
        plt.suptitle("三种图显示", fontname="SimHei")
        plt.show()

    方法二:

    def test14():
        # 上述是每次构造一个子图,然后在子图中绘制.也可以先构造所有的子图,再通过下标指定在哪张子图中绘制
        fig, axes = plt.subplots(2, 2)
        names = ['Anime', 'Comic', 'Game']
        values = [30, 10, 20]
        axes[0, 1].plot(names, values)
        axes[1, 0].bar(names, values)
        axes[1, 1].scatter(names, values)
        plt.show()

     十四:子图间距的调整

    def test15():
        # 调整子图间隔
        # #构造2x2的子图,子图共享x,y轴
        fig, axes = plt.subplots(2, 2, sharex=True, sharey=True)
        for i in range(2):
            for j in range(2):
                axes[i, j].hist(np.random.rand(500), bins=100, alpha=0.7, color="k")
        plt.subplots_adjust(hspace=0, wspace=0)  # 修改内部的宽,高间距为0
        plt.show()

     十五: 绘制柱状图

    垂直柱状图plt.bar(names,values)
    水平柱状图plt.barh(names,values)

    def test16():
        # 垂直柱状图 plt.bar(name, values)
        # 水平柱状图 plt.barh(name, values)
        x = np.random.randint(1, 10, 8)
        label = list("abcdefgh")
        plt.subplot(221)
        plt.bar(label, x)
        plt.subplot(222)
        plt.barh(label, x)
        plt.show()

     pd.DataFrame.plot.bar()绘制柱形图

    import pandas as pd
    def test17():
        x = np.random.randint(1, 10, 8)
        y = np.random.randint(1, 10, 8)
        # index为分类, columns为数据的柱状图
        data = pd.DataFrame([x, y], index=["X", "Y"], columns=list("abcdefgh"))
        # data.plot.bar()
        data.transpose().plot.bar()  # data.transpose()转置
        plt.show()

                                

  • 相关阅读:
    SecureCRT_FX8.0完整版
    bridge
    Quartz 框架 教程(中文版)2.2.x
    Quartz教程五:SimpleTrigger
    Quartz教程四:Trigger
    Quartz教程三:Job与JobDetail介绍
    Quartz教程二:API,Job和Trigger
    Quartz教程一:使用quartz
    Quartz教程:快速入门
    Kubernetes 1.5.3 部署
  • 原文地址:https://www.cnblogs.com/zhouzetian/p/12726528.html
Copyright © 2011-2022 走看看