• python --Matplotlib详解


    安装

    pip install matplotlib
    
    • 1

    导包

    import matplotlib.pyplot as plt
    
    • 1

    绘制散点图

    如果输入的是两个列表,一个表示 x 轴的值,一个表示 y 轴的值,那么就可以在直角坐标系中划出很多个点,然后将这些点用指定的线段连接起来就得到了散点图。

    可以使用 plt.plot(x, y, 风格) 来达到目的,其中的风格有很多种,如点状、小叉、圆圈、不同颜色等。

    import matplotlib.pyplot as plt
    x = [1, 2, 3, 4]
    y = [2, 4, 2, 6]
    y1 = [e+1 for e in y]
    y2 = [e+2 for e in y]
    plt.plot(x, y, "b.")                  # b:蓝色,.:点
    plt.plot(x, y1, "ro")                  # r:红色,o:圆圈
    plt.plot(x, y2, "kx")                 # k:黑色,x:x字符(小叉)
    plt.show()                            # 在窗口显示该图片
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述
    我们可以看到不同颜色、不同线型、不同的点的形状。

    上述代码的第 9 行用来显示图片,但这并不是最好的使用方式。本章后面的部分会将产生的图片保存到 png 文件中。可以使用下面的代码来替换第 9 行的代码:

    plt.savefig("demo1.png")
    
    • 1

    绘制折线图

    折线图和点状图类似,只是在风格上有所不同。我们需要指定线型,如“-”表示实线、“–”表示虚线、“-.”表示带点的虚线、“:”表示完全用点来组成的虚线。

    import matplotlib.pyplot as plt
    x  = [1, 2, 3, 4]
    y  = [1, 2, 3, 4]
    y1 = [e+1 for e in y]                # 计算y的值
    y2 = [e+2 for e in y]
    y3 = [e+3 for e in y]
    plt.plot(x, y,  "b.-")               # b:蓝色,.:点,-:线
    plt.plot(x, y1, "ro--")              # r:红色,o:圆圈,--:短线连接起来
    plt.plot(x, y2, "kx-.")              # k:黑色,x:x字符,-.:点和线
    plt.plot(x, y3, "c*:")               # c:蓝绿色,*:*字符,::点组成的线
    plt.savefig("demo1.png")            # 将图片保存到文件中
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述
    其实参数 x 是可选的,如果不填写,那么 x=[1,2,3,…]。例如上面的代码可以写成下面的样子,而含义没有任何差别;

    import matplotlib.pyplot as plt
    y  = [1, 2, 3, 4]            # 4组数据
    y1 = [e+1 for e in y]
    y2 = [e+2 for e in y]
    y3 = [e+3 for e in y]
    plt.plot(y,  "b.-")           # 没有x参数
    plt.plot(y1, "ro--")          # r:红色,o:圆圈,--:短线连接起来
    plt.plot(y2, "kx-.")          # k:黑色,x:x字符,-.:点和线
    plt.plot(y3, "c*:")           # c:蓝绿色,*:*字符,::点组成的线
    plt.savefig("demo3.png")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    颜色的表示法对应关系

    表示法颜色
    ‘b’蓝色
    ‘g’绿色
    ‘r’红色
    ‘c’蓝绿色
    ‘m’品红
    ‘y’黄色
    ‘k’黑色

    点的样式对应关系

    表示法颜色
    ‘o’小圆圈
    ‘v’朝下的三角形
    ‘^’朝上的三角形
    ‘>’朝右的三角形
    ‘<’朝左的三角形
    ‘x’
    ‘+’加号
    ‘s’方框

    线型的样式对应关系

    表示法颜色
    ‘-’实线
    ‘–’虚线
    ‘-.’带有点的虚线
    ‘:’点组成的虚线

    绘制柱状图

    柱状图和散点图类似,也是需要两个参数 x 和 y,但画出来的效果差别很大,而且需要使用 bar() 函数而不是 plot() 函数

    import matplotlib.pyplot as plt
    x  = [1, 2, 3, 4]
    y  = [1, 2, 3, 4]
    y1 = [e+1 for e in y]
    y2 = [e+2 for e in y]
    y3 = [e+3 for e in y]
    plt.bar(x, y)
    plt.savefig("bardemo1.png")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

    可以修改柱体的颜色,通过参数 color 来完成。例如将以上代码的第 7 行进行如下修改:

    plt.bar(x, y, color="red")
    
    • 1

    也可以设定柱体边框的颜色,通过参数 edgecolor 来完成。例如将以上代码的第 7 行修改为:

    plt.bar(x, y, color="red", edgecolor="black")
    
    • 1

    在这里插入图片描述
    x 轴除了可以是数字信息外,也可以是其他信息。例如可以用柱状图来表示几种编程语言的受欢迎程度,代码如下:

    import matplotlib.pyplot as plt
    language = ('Python', 'C++', 'Java', 'Perl', 'Scala', 'Lisp')
    x_pos = range(len(language))  # [0, 1, 2, 3, 4, 5, 6]
    pop = [10, 8, 6, 4, 2, 1]
    plt.bar(x_pos, pop, align='center', alpha=0.5)
    plt.xticks(x_pos, language)
    plt.ylabel('Popularity')
    plt.title('Programming Language Popularity)
    plt.savefig("demo4.png")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述
    绘制水平柱状图

    将柱状图中的 bar 改成 barh 即可,barh 表示 horizon bar,就是水平的柱状图。其用法和垂直的柱状图类似,下面是一个使用的例子:

    import matplotlib.pyplot as plt
    language = ('Python', 'C++', 'Java', 'Perl', 'Scala', 'Lisp')
    x_pos = range(len(language))  # [0, 1, 2, 3, 4, 56]
    pop = [10, 8, 6, 4, 2, 1]
    plt.barh(x_pos, pop, align='center', alpha=0.5)
    plt.yticks(x_pos, language)
    plt.xlabel('Popularity')
    plt.title('Programming Language Popularity')
    plt.savefig("demo5.png")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

    绘制饼图

    可以使用 pie() 函数来画饼图。下面是最简单的饼图,表示 4 个城市的高技术产值。

    import matplotlib.pyplot as plt
    lbs = ["Beijing", "Shanghai", "Guangzhou", "Shenzhen"]        # 标签
    vals = [50, 20, 10, 20]
    plt.pie(vals, labels=lbs)
    plt.savefig("piedemo1.png")
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述
    也可以使用 explode 参数表示某个单元是否被切出来,以及切出来的长度。例如希望上海和广州被切出来,那么可以使用下面的代码:

    import matplotlib.pyplot as plt
    lbs = ["Beijing", "Shanghai", "Guangzhou", "shenzhen"]        # 标签
    vals = [50, 20, 10, 20]
        # 0表示不切出来,否则表示切出来,值越大切出的距离越大
    explode = (0, 0.1, 0.2, 0)
    plt.pie(vals, explode=explode, labels=lbs)
    plt.savefig("piedemo2.png")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

    也可以用 colors 参数来表示各个块的颜色,这也是一个字符串的列表,如下面的代码所示:

    import matplotlib.pyplot as plt
    lbs = ["Beijing", "Shanghai", "Guangzhou", "shenzhen"]
    vals = [50, 20, 10, 20]                                # 值的列表
    explode = (0, 0.1, 0.2, 0)                            # 切出的长度
    color_list =['red', 'blue', 'yellow', 'gray']        # 颜色列表
    plt.pie(vals, explode=explode, colors=color_list, labels=lbs)    # 饼图
    plt.savefig("piedemo3.png")                            # 保存到png文件中
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

  • 相关阅读:
    7天学完Spring:基础学习结束,关于Spring事务及其传播机制
    咖啡赛道1个月6起新融资,该不该投?投融资另类数据深度解析
    rk3288-7.1屏保功能不能用-相框
    内存管理篇——物理内存的管理
    NC61 两数之和
    Maven打包错误:无效的源发行版:17
    RPA可以为你完成哪些重复性工作?
    基于粒子群优化算法的图象聚类识别matlab仿真
    C Primer Plus(6) 中文版 第8章 字符输入/输出和输入验证 8.5 创建更友好的用户界面
    zlMediaKit 10 http相关
  • 原文地址:https://blog.csdn.net/weixin_44634704/article/details/126269614