当前位置: 首页 > article >正文

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

        我们的目标是:通过这一套资料学习下来,可以熟练掌握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.kler.cn/a/447685.html

相关文章:

  • 《庐山派从入门到...》板载按键启动!
  • 新版国标GB28181设备端Android版EasyGBD支持国标GB28181-2022,支持语音对讲,支持位置上报,开源在Github
  • airflow docker 安装
  • C++进阶-2-STL
  • 强基计划之编程:开启科研精英培养新路径
  • 跨站脚本攻击的多种方式——以XSS-Labs为例二十关详解解题思路
  • sentinel学习笔记1-为什么需要服务降级
  • JUC并发工具---阻塞队列
  • 加电:DETR论文阅读
  • 基于鲲鹏服务器的打砖块小游戏部署
  • 《开启微服务之旅:Spring Boot 从入门到实践》(二)
  • 三种国产大语言模型Python免费调用
  • “在Python中,所有的数据都是对象”是什么意思?
  • 贪心算法求解跳跃游戏
  • 企业内训|高智能数据构建、Agent研发及AI测评技术内训-吉林省某汽车厂商
  • 对计算机网络中“层”的理解
  • Elasticsearch:什么是提示工程 - prompt engineering?
  • aosp15 - Activity生命周期切换
  • Ubuntu安装vue/cil(vue脚手架)
  • 排序算法 (插入,选择,冒泡,希尔,快速,归并,堆排序)
  • 【MAC】深入浅出 Homebrew 下 Nginx 的安装与配置指南
  • 探索 Vue.js 组件开发:从基础到进阶的完整指南
  • 基于单片机的火灾报警器 (论文+源码)
  • 选择排序和冒泡排序;MySQL架构
  • 数字化制造新生态:共话无代码+AI落地实践
  • 调整docker bridge地址冲突,通过bip调整 bridge地址