python数据分析-matplotlib散点图-条形图的绘制以及完整方法归纳02

news2024/11/25 11:55:08

matplotlib的基本使用02

    • 一.散点图的绘制
    • 二.散点图绘图步骤及案例解析
      • 1.导入模块
      • 2.设置散点图所有字符的字体样式
      • 3.编写主体代码
      • 4.主题代码解析
      • 5.图形展示
    • 三.条形图的绘制
    • 四.条形图案例展示
      • 1.导入模块
    • 五.绘制条形图完整代码
    • 六.条形图展示
    • 七.多个条形图展示
      • 1.结果展示
    • 八.总结

一.散点图的绘制

散点图的绘制使用的是scatter()方法,传入的参数也是两个列表,分别为x,y坐标轴的值使用散点图可以显示若干数列序列中各数值之间是否存在相关性.

二.散点图绘图步骤及案例解析

1.导入模块

from matplotlib import pyplot as plt
import matplotlib

2.设置散点图所有字符的字体样式

matplotlib.rcParams[‘font.family’] = ‘Microsoft Yahei’ # 字体样式

3.编写主体代码

from matplotlib import pyplot as plt
import matplotlib

matplotlib.rcParams['font.family'] = 'Microsoft Yahei'  # 字体样式


def draw():
    x = [30.1, 29.9, 29.9, 28.1, 28.1, 27.7, 27.6, 27.0, 26.5, 26.4, 26.0,
         25.5, 24.6, 24.5, 24.4, 23.4, 23.2, 22.4,
         21.6,
         21.3, 21.2, 21.0, 20.6, 20.4, 20.3, 20.3, 20.1, 20.1, 20.0, 19.4,
         18.6, 18.2, 18.2, 18.2, 18.1, 18.1, 18.1,
         18.1,
         18.0, 17.9, 17.6, 17.4, 17.3, 17.3, 17.2, 17.1, 17.1, 16.9, 16.7,
         16.7]

    y = [52.3, 55.2, 48.9, 45.9, 45.7, 50.3, 49.3, 45.1, 58.0, 46.1, 45.3,
         43.7, 47.9, 45.3, 52.9, 46.8, 47.3, 49.3,
         46.5,
         47.6, 46.3, 43.6, 44.3, 44.6, 49.0, 40.8, 41.1, 41.2, 42.5, 44.1,
         50.5, 46.0, 45.2, 44.0, 54.2, 48.0, 41.0,
         45.8,
         40.8, 50.1, 48.3, 41.5, 44.3, 47.9, 63.8, 46.3, 45.2, 39.2, 46.8,
         39.3]
    z = ['勒布朗-詹姆斯', '扬尼斯-阿德托昆博', '乔尔-恩比德', '特雷-杨', '卢卡-东契奇', '德马尔 - 德罗赞',
         '贾 - 莫兰特', '杰森 - 塔特姆', '尼古拉 - 约基奇', '德文 - 布克', '多诺万-米切尔',
         '斯蒂芬-库里', '扎克-拉文', '谢伊-吉尔杰斯-亚历山大', '卡尔-安东尼-唐斯',
         '杰伦-布朗', '达龙-福克斯', '帕斯卡尔-西亚卡姆', '达里厄斯-加兰', '吉米-巴特勒', '德章泰-默里',
         '安东尼-爱德华兹', '泰勒-希罗', '克里斯-米德尔顿', '迈尔斯-布里奇斯', '弗雷德 - 范弗利特',
         '朱利叶斯 - 兰德尔', 'RJ - 巴雷特', '拉梅洛 - 鲍尔', '特里 - 罗齐尔', '朱 - 霍勒迪',
         '德斯蒙德-贝恩', '乔丹-普尔', '拉塞尔-威斯布鲁克', '约纳斯-瓦兰丘纳斯', '尼古拉 - 武切维奇',
         '小加里 - 特伦特', '博扬 - 波格丹诺维奇', '丹吉洛 - 拉塞尔', '克里斯蒂安 - 伍德',
         '托拜厄斯-哈里斯', '凯德-坎宁安', '安芬尼-西蒙斯', '泰雷斯-马克西', '德安德烈 - 艾顿',
         '安德鲁 - 威金斯', '凯尔 - 库兹马', '雷吉 - 杰克逊', '哈里森 - 巴恩斯', '科尔 - 安东尼']
    # 绘制图像
    plt.figure(figsize=(16, 8), dpi=80)
    # 将数据绘制到散点图上
    plt.scatter(x, y)
    plt.title('NBA2021-2022赛季球员得分榜前50名命名率散点图', color='red',fontsize=23)  # 添加标题
    plt.xlabel('分数', color='green', fontsize=16)  # 添加x轴文字
    plt.ylabel('命名率: %', color='green', fontsize=16)  # 添加y轴文字

    x_ticks = x[::-1]  # 得到升序的分数
    # 添加x轴的刻度内容
    plt.xticks(x_ticks[::5] + [max(x)], rotation=45)  # 按照步长为5拿内容, 再将最后的一个数字放进去

    y_ticks = range(int(min(y)), int(max(y)) + 1)  # 得到命中率的升序
    # 添加xy轴的刻度内容
    plt.yticks(y_ticks[::4])  # 将y轴的刻度内容展现出来
    # 将姓名放到图当中付出
    n = 0
    for i, j in zip(x, y):  # 迭代两个列表
        # x轴坐标 y轴坐标 姓名 字体大小
        plt.text(i - 0.5, j + 0.4, z[n], fontsize='10')
        n += 1
    # 将图展示出来
    plt.show()


draw()

4.主题代码解析

for i, j in zip(x, y): # 迭代两个列表
# x轴坐标 y轴坐标 姓名 字体大小
plt.text(i - 0.5, j + 0.4, z[n], fontsize=‘10’)
n += 1
这段代码主要是给每一个点都写上它的标识,这里的zip是matplotlib的一种迭代方法,它可以配合for循环迭代,将两个列表的对应元素打包成一个个的元组,然后返回有这些元组组成的列表
[(),(),(),(),(),(),(),()],里面使用text方法把各个元组对应的点的标识添加上去,上面-0.5和+0.4是因为有些元组对应坐标点在我们绘制图的范围外.

5.图形展示

在这里插入图片描述

三.条形图的绘制

使用bar方法,条形图用来比较各独立类别下的某单独数据的大小
plt.bar(x, height, width)
x: 数据的个数, 可以数字, 也可以是range对象
height: 要绘制的数据
width: 表示柱状的宽度, 默认为0.8

四.条形图案例展示

例: 勒布朗.詹姆斯职业生涯常规赛平均数据条形图

1.导入模块

from matplotlib import pyplot as plt
import matplotlib

五.绘制条形图完整代码

def main():
    # 每赛季的平均得分
    height = [20.9, 27.2, 31.4, 27.3, 30.0, 28.4, 29.7, 26.7, 27.1,
              26.8, 27.1, 25.3, 25.3, 26.4, 27.5, 27.4, 25.3, 25.0,
              30.1]
    # 生涯平均得分
    avg = sum(height) / len(height)
    # 绘制图像
    plt.figure(figsize=(16, 9), dpi=80)
    # 将数据绘制到柱状图上
    plt.bar(range(len(height)), height, width=0.4)
    # 将生涯平均得分画一条折线图
    plt.plot(range(len(height)), [avg for i in range(len(height))],
             color='red')
    # 添加标题
    plt.title('勒布朗.詹姆斯职业生涯常规赛平均数据条形图', color='red',
              fontsize=23)
    # 添加x轴文字
    plt.xlabel('赛季', color='green', fontsize=16)
    # 添加y轴文字
    plt.ylabel('分数', color='green', fontsize=16)
    # 生成x轴内容的列表
    x_ticks = ['%d-%d赛季' % (i, i + 1) for i in range(2003, 2022)]
    # 添加x轴的刻度内容
    plt.xticks(range(len(height)), x_ticks, rotation=30)
    # 得到一个range对象, 起始值是分数最小值, 结束值是分数是大值, 同时得把最大值包含进去
    y_ = range(int(min(height)), int(max(height)) + 2)  # 得到命中率的升序
    y_ticks = ['%d分' % i for i in y_]  # 生成分数的列表内容
    plt.yticks(y_[::2], y_ticks[::2])  # 将y轴的刻度内容展现出来
    # 展示风格
    plt.grid(alpha=0.3)
    # 将图展示出来
    plt.show()


main()

grid是设置背景网格的透明度(0-1)

六.条形图展示

在这里插入图片描述

七.多个条形图展示

例: 勒布朗.詹姆斯/凯文.杜兰特职业生涯常规赛平均数据对比条形图

from matplotlib import pyplot as plt
import matplotlib  # 载入matplotlib完整库

matplotlib.rcParams['font.family'] = 'Microsoft Yahei'  # 字体,改为微软雅黑,默认 sans-serif


def main():
    # 詹姆斯
    height1 = [20.9, 27.2, 31.4, 27.3, 30.0, 28.4, 29.7, 26.7, 27.1, 26.8,
               27.1, 25.3, 25.3, 26.4, 27.5, 27.4, 25.3, 25.0, 30.3]
    # 杜兰特
    height2 = [20.3, 25.3, 30.1, 27.7, 28.0, 28.1, 32.0, 25.4, 28.2, 25.1,
               26.4, 26.4, 26.0, 26.9, 29.6]
    # 库里
    height3 = [30, 50.3, 50.1, 47.7, 48.0, 58.1, 62.0, 55.4, 78.2, 45.1,
               54, 56.4, 56.0, 56.9, 59.6, 54.8, 52.6, 62.5, 71.3]

    # 绘制图像
    plt.figure(figsize=(16, 9), dpi=80)
    # 将数据绘制到柱状图上
    # 从x轴不断往右来添加数据, 同时在原有位置上往右挪0.4
    plt.bar([i for i in range(len(height1))], height1, width=0.2,
            color='red', label='勒布朗.詹姆斯')
    plt.bar([i+0.2 for i in range(len(height2))], height2, width=0.2,
            color='green', label='凯文.杜兰特')
    plt.bar([i + 0.4 for i in range(len(height3))], height3, width=0.2,
            color='blue', label='史蒂芬.库里')
    # 添加标题
    plt.title('勒布朗.詹姆斯/凯文.杜兰特/史蒂芬.库里职业生涯常规赛平均数据对比条形图',
              color='red', fontsize=23)
    # 添加x轴文字
    plt.xlabel('赛季', color='green', fontsize=16)
    # 添加y轴文字
    plt.ylabel('分数', color='green', fontsize=16)
    # 生成x轴内容的列表
    x_ticks = ['第%d个赛季' % (i + 1) for i in range(len(height1))]
    # 添加x轴的刻度内容
    plt.xticks(range(len(height1)), x_ticks, rotation=30)
    # 得到一个range对象, 起始值是分数最小值, 结束值是分数是大值, 同时得把最大值包含进去
    y_ = range(int(min(height1)), int(max(height1)) + 2)  # 得到命中率的升序
    y_ticks = ['%d分' % i for i in y_]  # 生成分数的列表内容
    plt.yticks(y_[::4], y_ticks[::4])  # 将y轴的刻度内容展现出来
    # 展示风格
    plt.grid(alpha=0.3)
    # 展示图例
    plt.legend()
    # 将图展示出来
    plt.show()


main()

1.结果展示

在这里插入图片描述

八.总结

本篇文章主要是为了通过案例的形式,去熟悉matplotlib库里面的实例方法,再者条形图散点图以及上篇文章折线图,其实他们的主要步骤是一样的,我们只需要记忆并且熟悉他们不相同的地方,达到事半功倍的效果,希望本篇文章能够给你带来帮助,感谢支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/424303.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

工业交换机与商业交换机区别对比

摘要:工业交换机和商业交换机在功能方面差距较小,性能方面差别很大。最主要的差别是在对各类环境的适应性上,包括在温度、湿度、盐雾环境、振动环境、恶劣电磁干扰环境、海拔等各类环境下稳定可靠提供功能服务的能力。当然工业交换机在一些告…

Word控件Spire.Doc for .net 功能详解

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下,轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具,专注于创建、编辑、转…

继续Stable-Diffusion WEBUI方方面面研究(内容索引)

文章目录(零)前言(一)绘图(1.1)模型(1.1.1)基础模型(Stable-diffusion模型)(1.1.2)人物模型(LoRA模型)&#x…

4.4、网络模型

4.4、网络模型1.OSI七层参考模型2.TCP/IP四层模型①简介②四层介绍1.OSI七层参考模型 七层模型,亦称 OSI(Open System Interconnection)参考模型,即开放式系统互联。参考模型是国际标准化组织(ISO)制定的一…

实验1 MATLAB环境与运算基础

实验一一、实验的目的与要求二、实验原理三、实验仪器四、实验内容与步骤五、实验分析与总结一、实验的目的与要求 1、掌握 MATLAB环境与基本操作; 2、掌握 MATLAB常见数据类型的创建、表示和引用; 3、熟悉 MATLAB数据类型的各种运算与常用函数&#xf…

一篇文章让你搞懂TypeScript中的typeof()、keyof()是什么意思

TypeScript中的typeof()、keyof()是什么意思?知识回调(不懂就看这儿!)场景复现核心干货👇👇👇举例引入字面量类型(literal types&…

AC7811电机驱动方案—电路分析

目录 电源树 12V转5V 输出电压设计 电感的选取 欠压锁定 电容的选取 PCB布局 5V转3.3V 输出噪声 外部反向电压保护 接口电路设计 USB转串口 JTAG 驱动电路 驱动桥电路 采样回路设计 电源树 12V转5V 使用了MPQ4420作为电压转换芯片。 芯片手册经典应用 输出电…

Kafka——概述、安装及命令行操作

文章目录一、概述1.1、定义1.2、如何运作?1.3、传统消息队列的应用场景1.4、消息队列的两种模式1.5、Kafka的基础架构二、安装(需要安装zookeeper)三、常用命令行操作3.1、主题命令行操作3.2、生产者命令行操作3.3、消费者命令行操作一、概述…

Python操作MySQL就是这么简单

Python操作MySQL就是这么简单下载MySQL 8.0安装MySQL 8.0步骤2:选择安装类型步骤3:选择安装位置步骤4:配置MySQL 8.0步骤5:安装MySQL 8.0步骤6:完成安装启动MySQL 8.0MySQL 8.0的常用命令python的 pymysql库操作方法安…

【C++】哈希的应用 -- 位图

文章目录一、位图的引入二、位图的实现三、bitset四、位图的应用五、哈希切割一、位图的引入 我们通过一道面试题来引入位图: 给定40亿个不重复的无符号整数,且没排过序,现在给一个无符号整数,如何快速判断一个数是否在这40亿个数…

ChatGPT想干掉测试人员,做梦去吧

很多人都发现ChatGPT可以做一些代码相关的工作,不仅可以写一些测试用例和自动化脚本,还可以做一定量的调优,于是就开始担忧起来,到哪天我的测试工作会不会被ChatGPT这个工具给取代了? 1. ChatGPT目前对哪些东西会有冲击…

Java:Arrays类

1、Arrays是啥&#xff1f; 数组操作工具类&#xff0c;专门用于操作数组元素的。 2.Arrays类的常用API 方法说明public static String toString(类型[] a)对数组进行排序public static void sort(类型[] a)对数组进行默认升序排序public static <T> void sort(类型[]…

图像分割——交叉熵损失

一、前言 写这篇博客的目的主要有两点&#xff0c;首先一点就是&#xff0c;以为对于交叉熵学过就会了&#xff0c;当初笔记也没有详细写过&#xff0c;但今天看论文发现里面的公式没有看懂才发现自己了解的还不够&#xff0c;平时用也是直接用的框架&#xff0c;原来一直认为会…

Java基础--数据结构

阅读目录 目录 数据结构 Java 集合框架 List Set Map 数据结构 Java工具包提供了强大的数据结构。在Java中的数据结构主要包括以下几种接口和类&#xff1a; 枚举&#xff08;Enumeration&#xff09;、位集合&#xff08;BitSet&#xff09;、向量&#xff08;Vector&a…

进阶C语言:程序环境和预处理

有关C语言的知识马上就要结束了&#xff0c;在学完了前面的基础之上我们就来深究一下程序底层的逻辑&#xff0c;关于程序的预处理编译指令&#xff0c;话不多说&#xff0c;我们直接开始&#xff1a; 目录 1.程序的翻译环境和执行环境 2. 详解编译链接 2.1翻译环境 2.2编译…

IT培训有靠谱的机构吗,长什么样的?

关于IT培训的问题&#xff0c;网上有一大波劝退的声音&#xff1a;现在的IT越来越卷&#xff0c;高校计算机专业毕业生每年那么多&#xff0c;作为小白转行的你竞争力又在哪里呢&#xff1f;而且去年互联网大厂那么多裁员&#xff0c;还有大幅度降薪等等&#xff0c;IT行业已经…

通达信破底翻选股公式,用缠论底分型进行优化

上次在写《通达信破底翻形态选股公式&#xff0c;选出破底之后再翻回的股票》这篇文章时&#xff0c;编写破底翻选股公式就考虑使用缠论底分型&#xff0c;但是底分型的包含关系较为复杂&#xff0c;不容易处理&#xff0c;只能暂时搁置&#xff0c;采用了一种简单的方式&#…

【PyTorch】第九节:Softmax 函数与交叉熵函数

作者&#x1f575;️‍♂️&#xff1a;让机器理解语言か 专栏&#x1f387;&#xff1a;PyTorch 描述&#x1f3a8;&#xff1a;PyTorch 是一个基于 Torch 的 Python 开源机器学习库。 寄语&#x1f493;&#xff1a;&#x1f43e;没有白走的路&#xff0c;每一步都算数&#…

低延迟流式语音识别技术在人机语音交互场景中的实践

美团语音交互部针对交互场景下的低延迟语音识别需求&#xff0c;提出了一种全新的低出字延迟流式语音识别方案。本方法将降低延迟问题转换成一个知识蒸馏过程&#xff0c;极大地简化了延迟优化的难度&#xff0c;仅通过一个正则项损失函数就使得模型在训练过程中自动降低出字延…

靶机精讲之Holynix

找不到ip 就设置两个网络适配器 再添加一个NAT 主机发现 nmap扫描 端口扫描 UDP扫描 服务扫描 脚本扫描 拒绝服务攻击 sql注入 枚举 web渗透 sql注入 证明有注入 sql注入语句 语句 ‘ or 11 --&#xff08;空格&#xff09; 目录结构像有文件包含 有报错但无法利用 调用系统…