Python 从入门到实战46(Matplotlib绘制常用表)

embedded/2024/12/23 5:34:54/

        我们的目标是:通过这一套资料学习下来,可以熟练掌握python基础,然后结合经典实例、实践相结合,使我们完全掌握python,并做到独立完成项目开发的能力。

        上篇文章我们学习了pandas数据操作的相关基础知识。今天学习一下Matplotlib绘制常用表的相关操作。

        Matplotlib是一个python 2D绘图库,常用于数据可视化。只需要很少的几行代码就可以绘制各种各样的图标,如柱形图、折线图、散点图、饼形图等。

1、绘制柱形图

柱形图,又称长条图、柱形图、条状图等,是一种以长方形的长度为变量的统计图表。柱形图用来比较两个或以上的数据。只有一个变量,通常用于较小的数据集分析。

Matplotlib 绘制柱形图主要使用bar()函数,语法格式如下:

matplotlib.pyplot.bar(x,height,width,bottom=None,*,align=’center’,data=None,**kwargs)

参数说明:

x: x轴数据

height:柱子的高度,也就是Y轴数据

width:浮点型,柱子的宽度,默认值是0.8,可以指定固定值

bottom:标量或数组,可选参数,柱形图的y坐标,默认值为None

*:星号本身不是参数。星号表示其后面的参数为命名关键字参数,命名关键字参数必须传入参数名,否在程序会出现错误。

align:对齐方式,如center—居中,edge—边缘,默认值center

data:data 关键字参数,如果给定一个数据参数,所有位置和关键字参数将被替换

** kwargs:关键字参数,如color—颜色,alpha—透明度,label—每个柱子显示的标签。

举例说明:

假如数据为:

年份

销售额

2018

500.00

2019

600.00

2020

700.00

2021

800.00

2022

900.00

2023

1,000.00

2024

1,100.00

绘制柱形图:

import pandas as pd #导入pandas 模块
import matplotlib.pyplot as plt #导入matplotlib.pyplot 模块


df =pd.read_excel("./test_data/sales_data.xlsx") #读取数据
plt.rcParams["font.sans-serif"]=["SimHei"]  #解决中文乱码

x = df["年份"]   #x轴数据
height = df["销售额"]  #柱子的高度
plt.grid(axis="y",which="major")  #生成虚线网络
#x,y轴标签设定
plt.xlabel("年份")
plt.ylabel("线上销售额(元)")

#图表的标题
plt.title("2018-2024销售额")
#绘制柱形图,width 柱子宽度,align 居中对齐,color 为柱子颜色,alpha 为透明度
plt.bar(x,height,width=0.5,align="center",color="b",alpha=0.5)

#设置每个柱子的文本标签
for a,b in zip(x,height):
    plt.text(a,b,format(b,","),ha="center",va="bottom",fontsize=9,color="b",alpha=0.9)
plt.legend(["销售额"])  #设置图例
plt.show()            #显示图表

执行结果:

2、绘制折线图

折线图可以显示随时间变化的连续数据,因此非常适用于显示在相等时间间隔下数据的趋势。

在折线图中,类别数据沿水平轴均匀分布,所有值数据沿垂直轴均匀分布。Matplotlib 主要使用plot()函数绘制折线图,语法:

matplotlib.pyplot.plot(x,y,format_string,**kwargs)

说明如下:

x: x轴数据

y: y轴数据

format_string:控制曲线格式的字符串,包含颜色、线条样式,标记样式

**kwargs:附加参数,用于设置自动图例、线宽、标记颜色等

label ---数据标签

color---折线颜色

maker—标记样式

linestyle---折线样式

mfc---标记填充颜色

ms---标记大小

alpha---透明度,设置该参数可以改变颜色的深浅

举例说明:

import pandas as pd #导入pandas 模块
import matplotlib.pyplot as plt #导入matplotlib.pyplot 模块


df1 = pd.read_excel("./test_data/scores_data.xlsx") #读取excel中数据,读出的数据是DataFrame格式

#绘制多折线图,每个学科的成绩一条折线,学生姓名为x轴
x1 = df1["姓名"]  #取出姓名的一列
y1 = df1["语文"]
y2 = df1["数学"]
y3 = df1["英语"]
plt.rcParams["font.sans-serif"]=["SimHei"]  #解决中文乱码
plt.rcParams["xtick.direction"]="out" #x 轴的刻度线向外显示
plt.rcParams["ytick.direction"]="in" #y 轴的刻度线向内显示
#图表的标题
plt.title("语数外成绩比较图",fontsize="18")

#绘制语文折线图
plt.plot(x1,y1,label="语文",color='r',marker="p")
#绘制数学折线图
plt.plot(x1,y2,label="数学",color='g',marker=".",mfc="r",ms=8,alpha=0.6)
#绘制英文折线图
plt.plot(x1,y3,label="英语",color='b',marker="*",linestyle="-")
plt.grid(axis="y")  #显示网络关闭y轴
plt.ylabel("分数") #y轴标签
plt.yticks(range(50,150,10)) #y轴刻度值范围设定
plt.legend(["语文","数学","英语"])  #设置图例
plt.show()            #显示图表

执行结果:

3、绘制散点图

散点图是用来查看数据的分布情况或相关性,一般用在线性回归分析中,以查看数据点在坐标系平面上的分布情况。散点图表示因变量随自变量变化的大致趋势。

matplotlib 绘制散点图使用plot()和scatter()函数可以实现。

scatter()函数语法:

matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, *, edgecolors=None, plotnonfinite=False, data=None, **kwargs)

属性

参数

意义

坐标

xy

输入点列的数组,长度都是size

点大小

s

点的直径数组,默认直径20,长度最大size

点颜色

c

点的颜色,默认蓝色 'b',也可以是个 RGB RGBA 二维行数组。

点形状

marker

MarkerStyle 点的样式,默认小圆圈 'o'

调色板

cmap

Colormap,默认 None,标量或者是一个 colormap 的名字,只有 c 是一个浮点数数组时才使用。如果没有申明就是 image.cmap

亮度(1

norm

Normalize,默认 None,数据亮度在 0-1 之间,只有 c 是一个浮点数的数组的时才使用。

亮度(2

vminvmax

亮度设置,在 norm 参数存在时会忽略。

透明度

alpha

透明度设置,0-1 之间,默认 None,即不透明

线

linewidths

标记点的长度

颜色

edgecolors

颜色或颜色序列,默认为 'face',可选值有 'face', 'none', None

其他参数 

**kwargs 

其它可选参数

举例说明:

import pandas as pd #导入pandas 模块
import matplotlib.pyplot as plt #导入matplotlib.pyplot 模块
df1 = pd.read_excel("./test_data/sales_advise_data.xlsx") #读取excel中数据,读出的数据是DataFrame格式
x = df1["支出"] #取出“支出”这一列的数据
y = df1["收入"]
plt.rcParams["font.sans-serif"]=["SimHei"]  #解决中文乱码
plt.title("销售收入和广告费散点图")
plt.ylabel("销售收入") #y轴标签
plt.xlabel("广告费之处") #x轴标签
plt.scatter(x,y,color="red",alpha=0.5)#真实值散点图
plt.show()  #显示图片

执行结果:

4、绘制饼形图

饼形图常用来显示各个部分在整体所占的比例。例如,我们测试工作中发现了很多bug,我们可以对bug类型进行分类,然后计算每类bug占总bug数的比例。以此确定主要问题类型。这样,若是通过比例的表格形式展示出来就不直观,若是使用饼形图来表示就一目了然了!

Matplotlib 绘制饼形图主要使用pie()函数,语法:

pie(
    x: ArrayLike,
    explode: ArrayLike | None = None,
    labels: Sequence[str] | None = None,
    colors: ColorType | Sequence[ColorType] | None = None,
    autopct: str | Callable[[float], str] | None = None,
    pctdistance: float = 0.6,
    shadow: bool = False,
    labeldistance: float | None = 1.1,
    startangle: float = 0,
    radius: float = 1,
    counterclock: bool = True,
    wedgeprops: dict[str, Any] | None = None,
    textprops: dict[str, Any] | None = None,
    center: tuple[float, float] = (0, 0),
    frame: bool = False,
    rotatelabels: bool = False,
    *,
    normalize: bool = True,
    hatch: str | Sequence[str] | None = None,
    data=None,
)

参数说明:

  1. x:一维数据,通常是一个列表或者数组,表示饼图的每部分的数值。

  1. explode:同样大小的数组,指定饼图各部分分离多远。

  1. labels:提供饼图每部分的标签的字符串列表。

  1. colors:设置饼图每部分的颜色。

  1. autopct:格式字符串或者返回字符串的函数,用于标注每部分的比例。

  1. pctdistance:标注比例距离饼图中心的距离。

  1. shadow:布尔值,是否显示阴影。默认是False

  1. labeldistance:文本标签与圆的半径的距离。

  1. startangle:起始绘制的角度,默认是从x轴正方向逆时针方向开始。

  1. radius:定义饼图的半径大小。

  1. counterclock:是否使用逆时针方向标签。默认值为True表示逆时针

  1. wedgeprops:字典,用于设置扇形的属性,如边界颜色、宽度等。

  1. textprops:字典,用于设置文本标签的属性,如字体大小、颜色等。

  1. center:一个元组,定义饼图的中心位置。

举例说明:

import pandas as pd #导入pandas 模块
import matplotlib.pyplot as plt #导入matplotlib.pyplot 模块
#绘制饼形图
df1 = pd.read_excel("./test_data/pie_shengshi_data.xlsx") #读取excel中数据,读出的数据是DataFrame格式
plt.rcParams["font.sans-serif"] = ["SimHei"]  #解决中文乱码
plt.figure(figsize=(5,3))    #设置画布大小
labels = df1["省"]   #饼图标签,取省那一列值
sizes = df1["销量"]   #饼图数据,不需要计算成比例

#设置饼图中每个扇形的颜色
colors = ["red","yellow","slateblue","green","magenta","cyan","darkorange","lawngreen","pink","gold"]

plt.pie(sizes,                 #饼图数据
        labels = labels,        #添加区域水平标签
        colors = colors,
        labeldistance= 1.02,   #设置扇形标签(图例)与圆心的距离
        autopct = "%.1f%%",#设置百分比的格式,保留一位小数
        startangle=90,  #设置饼图的初始角度
        radius=0.5,#设置饼图的半径
        center=(0.2,0.2), #设置饼图的原点
        textprops={"fontsize":9,"color":"k"},   #设置文本标签的属性值
        pctdistance=0.6     #设置百分比标签与圆心的距离
        )
plt.axis("equal")   #设置x,y轴刻度一致,保证饼图为圆形
plt.title("2024年12月各省、区或市占销售比情况分析")  #标题
plt.show()  #展示图片

执行结果:

今天先写学习到这里了,每天进步一点点。明天也要加油啊!


http://www.ppmy.cn/embedded/147986.html

相关文章

Nginx界的天花板-Oracle 中间件OHS 11g服务器环境搭建

环境信息 服务器基本信息 如下表,本次安装总共使用2台服务器,具体信息如下: 服务器IP DNS F5配置 OHS1 172.xx.xx.xx ohs01.xxxxxx.com ohs.xxxxxx.com OHS2 172.xx.xx.xx ohs02.xxxxxx.com 服务器用户角色信息均为:…

Java 集合框架中的 List、ArrayList 和 泛型 实例

— Java 集合框架中的 List、ArrayList 和 泛型 在 Java 中,集合框架提供了许多不同类型的集合类,用于存储和操作对象。List 和 ArrayList 是最常用的两种集合类型,而泛型(Generics)则是 Java 中的一项重要特性&…

Python实现应用最小二乘法融合SVM-LSTM回归模型电力负荷预测项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后关注获取。 1.项目背景 随着全球能源需求的不断增长,电力系统的稳定性和效率变得至关重要。准确的电力负荷预测…

融合机器学习算法:用VotingClassifier实现分类多模型的投票集成

背景 VotingClassifier是一种集成学习方法,它将多个不同的机器学习模型组合起来,通过投票的方式对分类任务做出决策,从而提高整体模型的预测性能和鲁棒性 VotingClassifier的核心机制 VotingClassifier提供两种主要的投票策略硬投票和软投…

设计模式学习[13]---抽象工厂模式+简单工厂+工厂方法模式回顾

文章目录 前言1.原理阐述1.1 说明11.2 说明2 2.举例 总结 前言 之前写过一些工厂的相关内容,详情见这两篇:简单工厂与工厂方法 这篇博客主要讲抽象工厂模式。 1.原理阐述 1.1 说明1 抽象工厂模式:提供一个创建一系列相关或相互依赖对象的…

Neo4j插入数据逐级提升速度4倍又4倍

语雀版:https://www.yuque.com/xw76/back/dtukgqfkfwg1d6yo 目录 背景介绍初始方案Node()创建事务批量提交记录Node是否存在生成Cypher语句执行数据库参数优化切换成85k个三元组测试建索引(很显著!!!)MATCH…

Java 实现 AES 加密和解密

目录 前言 一、AES 加密算法简介 1.诞生背景 2.简介 二、AES 加密算法的核心原理 1.分组密码模式 2.密钥扩展 3.加密轮次与操作 三、AES 加密算法的优势 1.高效性 2.安全性 3.广泛的适用性 四、AES加密模式的几种方式 1.电子密码本模式(ECB&#xff0c…

【嵌入式开发笔记】OpenOCD到嵌入式调试

最近在把玩一块Risc-V的开发板,使用开发板调试时,需要用到专门的下载器和OpenOCD进行调试。 为了连接这个板子,费了九牛二虎之力。 这里简单记录一下自己的折腾经过吧。 0x00 环境准备 0x0001 调试背景 系统:Virtual Box Ub…