• Matplotlib绘制折线图、散点图、柱状图、直方图、饼图代码


    一、折线图

    以折线的上升或下降来表示统计数量的增减变化的统计图

    • 特点:能够显示数据的变化趋势,反映事物的变化情况(变化)
    • 函数:plt.plot(x, y)
    1. import matplotlib.pyplot as plt
    2. import random
    3. from pylab import mpl
    4. mpl.rcParams["font.sans-serif"] = ["SimHei"] # 设置显示中文字体
    5. mpl.rcParams["axes.unicode_minus"] = False # 设置正常显示符号
    6. # 数据准备
    7. x = range(24)
    8. y = [random.uniform(13, 20) for i in x] # random.uniform():随机生成13-20范围内的浮点数
    9. plt.figure(figsize=(10, 5), dpi=80) # 创建画布
    10. plt.plot(x, y, color='y', linestyle='-',label='樟树') # 绘制折线图
    11. x_ticks_label = ["{}:00".format(i) for i in x] # 构建x轴刻度标签
    12. y_ticks = range(40) # 构建y轴刻度
    13. # 修改x,y轴坐标的刻度显示
    14. plt.xticks(x[::2], x_ticks_label[::2])
    15. plt.yticks(y_ticks[10:20:1])
    16. plt.grid(True, linestyle='-', alpha=0.9) # 添加网格
    17. plt.legend(loc=0) # 显示图例
    18. # 描述信息
    19. plt.xlabel("时间")
    20. plt.ylabel("温度")
    21. plt.title("24小时内温度变化图", fontsize=18)
    22. plt.savefig("./plot.jpg") # 保存至指定位置
    23. plt.show() # 显示图像

    结果如下

    二、散点图

    用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式

    • 特点:判断变量之间是否存在数量关联趋势,展示离群点(分布规律)
    • 函数:plt.scatter(x, y)
    1. import matplotlib.pyplot as plt
    2. import random
    3. # 数据准备
    4. x = range(100)
    5. y = [random.uniform(13, 20) for i in x] # random.uniform():随机生成13-20范围内的浮点数
    6. plt.figure(figsize=(10, 5), dpi=80) # 创建画布
    7. plt.scatter(x, y, color='r', linestyle='-',label='樟树') # 绘制折线图
    8. x_ticks_label = ["{}天".format(i) for i in x] # 构建x轴刻度标签
    9. y_ticks = range(25) # 构建y轴刻度
    10. # 修改x,y轴坐标的刻度显示
    11. plt.xticks(x[::10], x_ticks_label[::10])
    12. plt.yticks(y_ticks[10:22:2])
    13. plt.grid(True, linestyle='-', alpha=0.9) # 添加网格
    14. plt.legend(loc=0) # 显示图例
    15. # 描述信息
    16. plt.xlabel("时间/天")
    17. plt.ylabel("温度")
    18. plt.title("24小时内温度变化图", fontsize=18)
    19. plt.savefig("./scatter.jpg") # 保存至指定位置
    20. plt.show() # 显示图像

     结果如下

    三、柱状图

    排列在工作表的列或行中的数据可以绘制到柱状图

    • 特点:绘制连离散的数据,能够一眼看出各个数据的大小,比较数据之间的差别(统计/对比)
    • 函数:plt.bar(x, width, align='center', **kwargs)
      • x:需要传递的数据
      • width:柱状图的宽度
      • align:每个柱状图的位置对齐方式
      • **kwargs
        • color:选择柱状图的颜色
    1. import matplotlib.pyplot as plt
    2. import random
    3. # 数据准备
    4. x = range(0,10)
    5. y = [random.randint(35, 45) for i in x] # random.uniform():随机生成13-20范围内的浮点数
    6. plt.figure(figsize=(10, 5), dpi=80) # 创建画布
    7. plt.bar(x, y, width=0.5, color=['b','r','g','y','c','m','y','k','c','g']) # 绘制折线图
    8. x_ticks_label = ["21{}班".format(i) for i in x] # 构建x轴刻度标签
    9. y_ticks = range(55) # 构建y轴刻度
    10. # 修改x,y轴坐标的刻度显示
    11. plt.xticks(x[::1], x_ticks_label[::1])
    12. plt.yticks(y_ticks[0:55:5])
    13. plt.grid(True, linestyle=':', alpha=0.3) # 添加网格
    14. # 描述信息
    15. plt.xlabel("班级")
    16. plt.ylabel("人数")
    17. plt.title("2021级各班人数柱状图", fontsize=18)
    18. plt.savefig("./bar.jpg") # 保存至指定位置
    19. plt.show() # 显示图像

    结果如下

    四、直方图

    由一系列高度不等的纵向条纹或线段表示数据分布的情况, 一般用横轴表示数据范围,纵轴表示分布情况

    • 特点:绘制连续性的数据展示一组或者多组数据的分布状况(统计)
    • 函数:matplotlib.pyplot.hist(x, bins=None)
      • x:需要传递的数据
      • bins:组距
    1. import matplotlib.pyplot as plt
    2. import numpy as np
    3. plt.style.use('_mpl-gallery')
    4. # 生成数据
    5. np.random.seed(1) # 随机数种子,用于生成随机数
    6. x = 4 + np.random.normal(0, 1.5, 200)
    7. # numpy.random.normal(loc=0.0, scale=1.0, size=None) 为一个正态分布
    8. # loc(float):均值,对应着这个分布的中心。loc=0说明这一个以y轴为对称轴的正态分布
    9. # scale(float):标准差,对应分布的宽度,scale越大越矮胖,scale越小,越瘦高
    10. # size(int 或者整数元组):输出的值赋在shape里,默认为None
    11. # plot:
    12. fig, ax = plt.subplots()
    13. ax.hist(x, bins=8, linewidth=0.5, edgecolor="white")
    14. ax.set(xlim=(0, 10), xticks=np.arange(1, 10),
    15. ylim=(0, 56), yticks=np.linspace(0, 56, 9)) # 9个,包含0,间隔为7,7×8=56,即[0,7,14,21,28,35,42,49,56]
    16. # np.arange():返回一个有终点和起点的固定步长的排列
    17. # np.linspace(start, stop, num):用来创建等差数列,num为个数
    18. plt.show()

    结果如下

    五、饼图

    用于表示不同分类的占比情况,通过弧度大小来对比各种分类

    • 特点:分类数据的占比情况(占比)
    • plt.pie(x, labels=,autopct=,colors)
      • x:数量,自动算百分比
      • labels:每部分名称
      • autopct:占比显示指定%1.2f%%
      • colors:每部分颜色
      • startangle:开始绘制的角度
      • shadow=True:阴影
    1. import matplotlib.pyplot as plt
    2. # 饼图,其中切片将按逆时针顺序排序和绘制:
    3. labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'
    4. sizes = [15, 30, 45, 20]
    5. explode = (0, 0.1, 0, 0) # 仅分解第二个切片,间距为0.1
    6. fig1, ax1 = plt.subplots()
    7. ax1.pie(sizes, explode=explode, labels=labels, autopct='%1.3f%%',colors=['r','y','c','g'],
    8. shadow=True, startangle=90)
    9. ax1.axis('equal') # 等长宽比确保饼被画成圆
    10. plt.show()

     结果如下

    Matplotlib官网:https://matplotlib.org/stable/

    学习导航:http://xqnav.top/ 

  • 相关阅读:
    怎样认识量化交易?
    QMediaPlayer 类使用教程
    redis的持久化
    LeetCode 138. 复制带随机指针的链表
    2022IDEAMaven搭建MyBatis框架(标签和对象不理解的看一下初始那一期的基础部分)
    nrf52832 GPIO输入输出设置
    快速使用ChatGpt Web Server
    Origin绘制折线图
    使用 Flutter 与 Firebase 制作 I/O 弹球游戏
    Java程序员学习资料分享,等你来收藏!
  • 原文地址:https://blog.csdn.net/qq_43874317/article/details/127988037