使用Python库Matplotlib绘制常用图表类型

news2025/1/21 17:58:51

使用Python库Matplotlib绘图

  • 一、Matplotlib绘图参数设置
    • 1.1 设置分辨率和画布大小
    • 1.2 保存图片并设置边缘留白为紧凑型
    • 1.3 设置坐标轴标签
    • 1.4 画直线设置线宽和颜色
    • 1.5 画子图
      • 1.5.1 通过figure的add_subplot()画子图
      • 1.5.2 通过plt的subplots画子图
  • 二、使用Matplotlib中scatter()方法画散点图
    • 2.1 散点图添加图例和点标签
    • 2.2 结合sklearn中make_blobs()方法绘制二分类数据
  • 三、箱线图
  • 四、双数轴折线图

一、Matplotlib绘图参数设置

1.1 设置分辨率和画布大小

# 分辨率参数-dpi,画布大小参数-figsize
plt.figure(dpi=300,figsize=(24,8))

1.2 保存图片并设置边缘留白为紧凑型

plt.savefig("accuracy.svg", bbox_inches="tight")

1.3 设置坐标轴标签

plt.xlabel("tree_num")
plt.ylabel("accuracy")

1.4 画直线设置线宽和颜色

plt.plot(accuracy, color="b", linewidth="1.6")

1.5 画子图

1.5.1 通过figure的add_subplot()画子图

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
fig=plt.figure()
# 画第1个图:折线图
x=np.arange(1,100)
ax1=fig.add_subplot(221)
ax1.plot(x,x*x)
# 画第2个图:散点图
ax2=fig.add_subplot(222)
ax2.scatter(np.arange(0,10), np.random.rand(10))
# 画第3个图:饼图
ax3=fig.add_subplot(223)
ax3.pie(x=[15,30,45,10],labels=list('ABCD'),autopct='%.0f',explode=[0,0.05,0,0])
# 画第4个图:条形图
ax4=fig.add_subplot(224)
ax4.bar([20,10,30,25,15],[25,15,35,30,20],color='b')
plt.show()

1.5.2 通过plt的subplots画子图

fig, ax = plt.subplots(2, 2,figsize=(10,8))
# 画第1个图:折线图
x = np.arange(1, 100)
ax[0][0].plot(x, x * x)
# 画第2个图:散点图
ax[0][1].scatter(np.arange(0, 10), np.random.rand(10))
# 画第3个图:饼图
ax[1][0].pie(x=[15, 30, 45, 10], labels=list('ABCD'), autopct='%.0f', explode=[0, 0.05, 0, 0])
# 画第4个图:条形图
ax[1][1].bar([20, 10, 30, 25, 15], [25, 15, 35, 30, 20], color='b')
plt.show()

二、使用Matplotlib中scatter()方法画散点图

scatter()方法关键参数:

matplotlib.pyplot.scatter(
    x,  # 散点的坐标
    y,
    s=None, # 散点的面积
    c=None, # 散点的颜色
    marker=None, # 散点样式,默认值为实心圆,'o'
    cmap=None, 
    norm=None,
    vmin=None,
    vmax=None,
    alpha=None, # 散点透明度,[0, 1]之间的数,0表示完全透明,1则表示完全不透明
    linewidths=None, # 散点的边缘线宽
    verts=None,
    edgecolors=None, # 散点的边缘颜色
    hold=None,
    data=None,
    **kwargs,
)

2.1 散点图添加图例和点标签

src_in_graph, tgt_in_graph = self.get_valid_source_and_target_list(source_list, target_list)
Xs, Ys = [], []
Xt, Yt = [], []
for s,t in zip(src_in_graph, tgt_in_graph):
    sx, sy = self.node_dict[s].coord
    tx, ty = self.node_dict[t].coord
    Xs.append(sx)
    Ys.append(sy)
    Xt.append(tx)
    Yt.append(ty)
plt.scatter(Xs, Ys, c='r', label='source')
for i in range(len(src_in_graph)):
    plt.text(Xs[i], Ys[i], src_in_graph[i])
plt.scatter(Xt, Yt, c='b', label='target')
for i in range(len(src_in_graph)):
    plt.text(Xt[i], Yt[i], src_in_graph[i])
plt.legend()
plt.savefig('src-tgt coord.svg', bbox_inches="tight")

2.2 结合sklearn中make_blobs()方法绘制二分类数据

import matplotlib.pyplot as plt
from sklearn import datasets

X, y = datasets.make_blobs(
    n_samples=150, n_features=2, centers=2, cluster_std=2.05, random_state=47
)
y = np.where(y == 0, 0, 1)  # 将标签转换为0和1
plt.scatter(X[:, 0], X[:, 1], c=y)
plt.show()

三、箱线图

箱线图(Box plot),也称为盒须图,是一种用于显示数据分布的统计图表。它通过显示数据的五个统计量(最小值、第一四分位数、中位数、第三四分位数和最大值)来概括数据的分布情况。箱线图在以下情况下特别有用:

  • 显示数据分布情况:箱线图提供了对数据分布的直观概览,包括数据的集中趋势、分散程度和对称性。
  • 识别异常值:箱线图通过“须”的长度和离群点(异常值)显示数据中的异常值或极端值。
  • 比较不同组的数据:箱线图可以并排显示多个数据集,方便比较不同组的分布情况。

箱线图应用场景:

  • 探索性数据分析(EDA):在数据分析的初始阶段,使用箱线图可以帮助快速了解数据的基本特征。
  • 比较多个数据集:当需要比较多个数据集的分布情况时,箱线图非常有用。例如,比较不同实验组或不同时间段的数据。
  • 检测数据异常值:箱线图可以帮助识别数据中的异常值,进而决定是否需要处理这些异常值。
  • 可视化报告:在报告和展示数据时,箱线图提供了一个简洁、直观的方式来展示数据的分布情况。

在画箱型图过程中,如图像未显示,是因为数据中存在空值。

四、双数轴折线图

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

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

相关文章

经验分享,超声波车位引导系统和视频车位引导系统有哪些区别

随着城市化进程的加速和汽车保有量的持续增长,停车难已成为城市交通管理的一大挑战。车位引导系统作为解决这一问题的有效工具,其重要性日益凸显。它不仅能够提升停车场的运营效率,还能显著改善驾驶者的停车体验。目前市场上主要有两种车位引…

【Centos7】CentOS 7下的PyTorch安装策略:高效实践指南

【Centos7】CentOS 7下的PyTorch安装策略:高效实践指南 大家好 我是寸铁👊 总结了一篇【Centos7】CentOS 7下的PyTorch安装策略:高效实践指南✨ 喜欢的小伙伴可以点点关注 💝 前言 由于需要跑深度学习,要用到pytorch&a…

全域外卖项目能不能做?可行性分析来了!

作为新的网络热词,全域外卖的传播范围随着时间的推移而不断扩大,从最初的行业内部逐步扩散到多个创业者社区,让许多创业者都有了做全域外卖项目的想法。但是,由于全域外卖赛道刚兴起不久,因此,目前大多数人…

实时监控与报警:人员跌倒检测算法的实践

在全球范围内,跌倒事件对老年人和儿童的健康与安全构成了重大威胁。据统计,跌倒是老年人意外伤害和死亡的主要原因之一。开发人员跌倒检测算法的目的是通过技术手段及时发现和响应跌倒事件,减少因延迟救助而造成的严重后果。这不仅对老年人群…

Mysql(一)查询Sql是如何执行的

Hello,大家好我是极客涛😎,我最近在整理Mysql相关的知识点,所以准备开启一个Mysql的主线任务,大概耗时3周左右,整个节奏还是由浅入深,主要包括Mysql的架构、事务实现、索引组织形式、SQL优化、日…

[C][数据结构][时间空间复杂度]详细讲解

目录 0.铺垫1.时间复杂度 -- 衡量算法的运行快慢1.是什么?2.大O的渐进表示法 2.空间复杂度 - 衡量算法所需要的额外空间3.常见复杂度对比 0.铺垫 时间是累计的空间是不累计的,可以重复利用 1.时间复杂度 – 衡量算法的运行快慢 1.是什么? …

SQL Server数据库UNC路径注入攻击

点击星标,即时接收最新推文 本文选自《内网安全攻防:红队之路》 扫描二维码五折购书 UNC路径注入 如果我们能强制SQL服务器连接到我们控制的SMB共享,连接将会包含认证数据。更具体的来说,将会发起一个NTLM认证,我们将能…

词法分析器的设计与实现--编译原理操作步骤,1、你的算法工作流程图; 2、你的函数流程图;3,具体代码

实验原理: 词法分析是编译程序进行编译时第一个要进行的任务,主要是对源程序进行编译预处理之后,对整个源程序进行分解,分解成一个个单词,这些单词有且只有五类,分别时标识符、关键字(保留字&a…

【实物+仿真设计】智能安全门控制系统设计

《智能安全门控制系统设计 实物仿真》 整体功能: 本课题首先确定整个智能安全门控制系统进行总体方案设计。主要包括按键模块、 电磁锁模块、语音提示模块、人员检测模块。按键提供给用户人工交互的功能,用户可 以选择输入按键的方式控制安全门。单片机…

民国漫画杂志《时代漫画》第39期.PDF

时代漫画39.PDF: https://url03.ctfile.com/f/1779803-1248636473-6bd732?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了,截止1937年6月战争来临被迫停刊共发行了39期。 ps: 资源来源网络!

市场凌乱,智能算法哪种效果好?

当我们在面对市场波动,个股震荡,无从下手的时候,不懂算法的朋友就只懂做t;懂算法的朋友这会儿就迷茫并不知道选择哪种智能算法交易?今天小编给大家整理一套性价比高的,适合个人投资者搞的算法交易&#xff…

【SITS_CC】卫星图像时间序列的变化字幕(IEEE GRSL)

摘要 Satellite images time series (SITS) 提供了一种有效的方法来同时获取地球上观测区域的时间和空间信息。然而,传统的遥感CD方法的输出是二进制图或语义变化图,往往难以被最终用户解释,传统的遥感图像变化字幕方法只能描述双时图像。提…

湖南(品牌定位)源点咨询 企业如何选择品牌定位差异化调研

湖南源点认为:精准且占据消费者认知,探寻与消费者共鸣的常态化品牌定位调研是企业品牌长远健康发展的基石。 品牌定位里要强调品牌的差异。英文是point of difference. 这个差异点就是强调品牌能带来的利益(benefit)。 这个“利…

C++编程:模板初阶

目录 一、泛型编程 1、通用版交换函数的实现: 2、模板的引入 二、函数模板 1、函数模板的定义和使用 2、函数模板的实例化 三、类模板 1、类模板的定义和实例化 模板是C的一项强大特性,犹如中国古代四大发明中的活字印刷术与造纸术融为一体一般&a…

【学习】测试用例设计与执行的黄金法则

在软件测试领域,测试用例的设计与执行是确保产品质量的关键环节。一个优秀的测试用例能够揭示软件中的缺陷,而高效的执行则能保障测试覆盖的全面性。如同璀璨的星辰指引航船前行,以下黄金法则将引领测试用例设计与执行的过程,确保…

uniapp内置的button组件的问题

问题描述 由于想要使用uniapp内置button组件的开放能力,所以就直接使用了button,但是他本身带着边框,而且使用 border:none;是没有效果的。 问题图片 解决方案 button::after {border: none;} 正确样式 此时的分享…

2024 年该如何利用 MidJourney 创作AI艺术(详细教程)

什么是 Midjourney Midjourney 是根据文本提示创建图像的生成式人工智能的优秀范例。与 Dall-E 和 Stable Diffusion 一样,它已成为最受欢迎的人工智能艺术创作工具之一。与竞争对手不同的是,Midjourney 是自筹资金和封闭源代码的,因此对它的…

Java并发核心问题以及并发三特性原子性、可见性、有序性

这篇文章比较长,请耐心看完,相信会让你对并发三大特性有一个较深的理解。 1.原子性(Atomicity) 1.1 原子性定义以及理解 即一个操作或者多个操作,要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。 一个很经典的…

C/C++学习笔记 C读取文本文件

1、简述 要读取文本文件,需要按照以下步骤操作: 首先,使用该函数打开文本文件fopen()。其次,使用fgets()或fgetc()函数从文件中读取文本。第三,使用函数关闭文件fclose()。 2、每次从文件中读取一个字符 要从文本文…

康谋技术 | 自动驾驶:揭秘高精度时间同步技术(一)

众所周知,在自动驾驶中,主要涵盖感知、规划、控制三个关键的技术层面。在感知层面,单一传感器采集外界信息,各有优劣,比如摄像头采集信息分辨率高,但是受外界条件影响较大,一般缺少深度信息&…