利用Matplotlib绘制折线图、散点图、柱状图、直方图、饼图的实例

 更新时间:2023年09月13日 09:15:49   作者:learning-striving  
这篇文章主要介绍了利用Matplotlib绘制折线图、散点图、柱状图、直方图、饼图的实例代码,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

一、折线图

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

特点:能够显示数据的变化趋势,反映事物的变化情况(变化)

函数:plt.plot(x, y)

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

结果如下

二、散点图

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

特点:判断变量之间是否存在数量关联趋势,展示离群点(分布规律)

函数:plt.scatter(x, y)

import matplotlib.pyplot as plt
import random
# 数据准备
x = range(100)   
y = [random.uniform(13, 20) for i in x]   # random.uniform():随机生成13-20范围内的浮点数
plt.figure(figsize=(10, 5), dpi=80)   # 创建画布
plt.scatter(x, y, color='r', linestyle='-',label='樟树')   # 绘制折线图
x_ticks_label = ["{}天".format(i) for i in x]   # 构建x轴刻度标签
y_ticks = range(25)   # 构建y轴刻度
# 修改x,y轴坐标的刻度显示
plt.xticks(x[::10], x_ticks_label[::10])
plt.yticks(y_ticks[10:22:2])
plt.grid(True, linestyle='-', alpha=0.9)   # 添加网格
plt.legend(loc=0)   # 显示图例
# 描述信息
plt.xlabel("时间/天")
plt.ylabel("温度")
plt.title("24小时内温度变化图", fontsize=18)
plt.savefig("./scatter.jpg")  # 保存至指定位置
plt.show()  # 显示图像

 结果如下

三、柱状图

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

特点:绘制连离散的数据,能够一眼看出各个数据的大小,比较数据之间的差别(统计/对比)

函数:plt.bar(x, width, align='center', **kwargs)

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

结果如下

四、直方图

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

特点:绘制连续性的数据展示一组或者多组数据的分布状况(统计)

函数:matplotlib.pyplot.hist(x, bins=None)

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

结果如下

五、饼图

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

特点:分类数据的占比情况(占比)

plt.pie(x, labels=,autopct=,colors)

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

结果如下

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

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • python读取hdfs上的parquet文件方式

    python读取hdfs上的parquet文件方式

    这篇文章主要介绍了python读取hdfs上的parquet文件方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • Python 3 实现定义跨模块的全局变量和使用教程

    Python 3 实现定义跨模块的全局变量和使用教程

    这篇文章主要介绍了Python 3 实现定义跨模块的全局变量和使用,本文通过实例代码相结合的形式给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-07-07
  • python实现简单的学生成绩管理系统

    python实现简单的学生成绩管理系统

    这篇文章主要为大家详细介绍了python实现简单的学生成绩管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • Python环境的安装以及PyCharm编辑器配置教程详解

    Python环境的安装以及PyCharm编辑器配置教程详解

    优质的教程可以让我们少走很多弯路,这一点毋庸置疑。这篇文章主要为大家介绍了纯净Python环境的安装以及PyCharm编辑器的配置,需要的可以参考一下
    2023-04-04
  • Python基于二分查找实现求整数平方根的方法

    Python基于二分查找实现求整数平方根的方法

    这篇文章主要介绍了Python基于二分查找实现求整数平方根的方法,涉及Python的二分查找算法与数学运算相关技巧,需要的朋友可以参考下
    2016-05-05
  • 解决jupyter notebook 前面书写后面内容消失的问题

    解决jupyter notebook 前面书写后面内容消失的问题

    这篇文章主要介绍了解决jupyter notebook 前面书写后面内容消失的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • python中的十大%占位符对应的格式化的使用方法

    python中的十大%占位符对应的格式化的使用方法

    本文主要介绍了python中的十大%占位符对应的格式化的使用方法,它可以很好的帮助我们解决一些字符串格式化的问题, 文中通过示例代码介绍的非常详细,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • 如何爬取通过ajax加载数据的网站

    如何爬取通过ajax加载数据的网站

    这篇文章主要介绍了如何爬取通过ajax加载数据的网站,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Python xlwt模块使用代码实例

    Python xlwt模块使用代码实例

    这篇文章主要介绍了Python xlwt模块使用代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • 关于python安装第三方库的问题与解决方案

    关于python安装第三方库的问题与解决方案

    Python开发中经常遇到第三方库安装困难的问题,速度慢可以使用国内镜像如清华镜像加速,若遇到wheel错误,可以手动下载whl文件进行安装,对于找不到的包,可以尝试在Python的官方包发布网站上进行搜索和下载,本文提供了具体的解决方案和操作步骤
    2024-10-10

最新评论