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

matplotlib库学习之绘图透明度设置(精炼准确)

matplotlib库学习之透明颜色设置

一、简介

在数据可视化中,透明度设置可以使图表更具层次感,特别是在多层叠加图表时。matplotlib库提供了多种方法来设置图表各个部分的透明度,包括图形、文本、图例、坐标轴等部分。

二、为什么要设置成透明色?

设置透明色的主要原因包括:

  • 方便插入论文中
  • 增强视觉效果:透明度可以使图形更加柔和,避免颜色过于突兀。
  • 多图叠加:在多个图形叠加时,通过透明度可以更清晰地观察每层图形的重叠部分。
  • 突出重点:通过调整透明度,可以突出显示重点数据,使图表更加直观易懂。

三、实例

如果不做特别说明,我们遵循以下原则:

  • 所有出现的【ax】均为坐标轴对象,【figure】为画布对象;ax和figure是成对出现的,调整样式主要是使用【ax】。

    figure, ax = plt.subplots()
    
  • 所有【plt】开始的函数调用都是我们对未保存的绘图对象的图像的样式设置,这种方法不利于在有多个绘图对象时,单独处理其中一个。

3.1 实例参考模型(不透明)

import matplotlib.pyplot as plt
import numpy as np# 设置中文字体
plt.rcParams['font.family'] = 'SimHei'# 生成数据
x = np.linspace(0, 20, 100)
y = np.sin(x)# 创建图形和子图,并设置画布颜色为 #00C9A7
fig, ax = plt.subplots(figsize=(10, 6), dpi=150, facecolor='#00C9A7')ax.plot(x, y)
ax.set_title("图形透明设置-baseline-无透明参考图")
ax.legend(['正弦曲线'])plt.show()

效果:

3.2 设置【画布】透明

【3.1】所示的图,青色部分以及被绘图区遮住的区域属于画布区域。

需要注意的是,下面设置的透明效果由于施加对象是最底层的对象——画布,完全透明后用plt.show(),画布会呈现白色。如果要看到真正的效果,需要将其保存下来【plt.show()】将图片显示后是可以看到保存的按钮。

3.2.1 直接设置透明(不创建坐标轴)
plt.subplots(figsize=(10, 6), dpi=150, facecolor='none')
  • facecolor:该属性用于设置画布背景色,默认为"#FFFFFF"即白色背景。
3.2.2 创建坐标轴时设置透明
fig, ax = plt.subplots(figsize=(10, 6), dpi=150, facecolor='none')

该处设置同上,仅设置的时间不同,对绘图效果无影响。

3.2.3 利用【figure.patch.set_alpha(0)】设置画布透明
figure.patch.set_alpha(0)

其中fig是plt.figure对象,常常由下面的语句给出:

figure, ax = plt.subplots()
3.2.4 示意图

在这里插入图片描述

3.2.5 整体代码
import matplotlib.pyplot as plt
import numpy as np# 设置中文字体
plt.rcParams['font.family'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False# 生成数据
x = np.linspace(0, 20, 100)
y = np.sin(x)plt.subplots(figsize=(10, 6), dpi=150, facecolor='none')
plt.plot(x, y, label='正弦曲线')
plt.title("图形透明设置-baseline-画布透明")
plt.legend()# fig, ax = plt.subplots(figsize=(10, 6), dpi=150, facecolor='none')
# ax.plot(x, y)
# ax.set_title("图形透明设置-baseline-画布透明")
# ax.legend(['正弦曲线'])plt.show()

3.3 设置【绘图区背景】透明

如不特别说明,本节所有【ax】均为一个坐标轴对象

3.3.1 方法1
ax.patch.set_alpha(0)

ax.patch.set_facecolor('none')

ax.set_facecolor('none')
3.3.2 方法2
plt.rcParams['axes.facecolor'] = 'none'

该方法设置的是全局参数,即每个绘图都会绘图区背景透明;除非你单独用方法1、2、3单独设置某个绘图的参数。

3.3.3 绘图区背景透明示意图

在这里插入图片描述

3.3.4 测试代码
import matplotlib.pyplot as plt
import numpy as np# 设置中文字体
plt.rcParams['font.family'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False 
# plt.rcParams['axes.facecolor'] = 'none'# 生成数据
x = np.linspace(0, 20, 100)
y = np.sin(x)# 创建图形和子图,并设置画布颜色为 #00C9A7
fig, ax = plt.subplots(figsize=(10, 6), dpi=150, facecolor='#00C9A7')
ax.plot(x, y)# 下面三条为测试效果语句,取消注释即可运行
# ax.patch.set_alpha(0)
# ax.set_facecolor('none')
# ax.patch.set_facecolor('none')ax.set_title("图形透明设置-绘图区背景透明")
ax.legend(['正弦曲线'])plt.show()

3.4 设置【绘制的图像】透明

3.4.1 方法1
ax.plot(x, y, alpha=0.1)
  • alpha:不透明度的设置,值越大越不透明

这里不一定是plot可以是散点图,三维图柱状图等等。

3.4.2 方法2
plt.legend(['正弦曲线'], framealpha=0)
3.4.3 示意图

在这里插入图片描述

3.4.4 测试代码
import matplotlib.pyplot as plt
import numpy as np# 设置中文字体
plt.rcParams['font.family'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False# 生成数据
x = np.linspace(0, 20, 100)
y = np.sin(x)# 创建图形和子图,并设置画布颜色为 #00C9A7
fig, ax = plt.subplots(figsize=(10, 6), dpi=150, facecolor='#00C9A7')
ax.plot(x, y, alpha=0.1)
ax.set_title("图形透明设置-绘制的数据图像本身透明")
ax.legend(['正弦曲线'])plt.show()

3.5设置【图例】透明

3.5.1 方法1
ax.legend(['正弦曲线'], framealpha=0)
  • framealpha:用于设置图例区域的不透明度;默认情况下,图例是白框打底的。
3.5.2 方法2
plt.legend(['正弦曲线'], framealpha=0)
3.5.2 示意图

下图左右部分分别为framealpha=1framealpha=0时的效果:
在这里插入图片描述

可以看到右边部分透明了,和背景融为一体。

3.5.3 测试代码
import matplotlib.pyplot as plt
import numpy as np# 设置中文字体
plt.rcParams['font.family'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False # 生成数据
x = np.linspace(0, 20, 100)
y = np.sin(x)# 创建图形和子图,并设置画布颜色为 #00C9A7
fig, ax = plt.subplots(figsize=(10, 6), dpi=150, facecolor='#00C9A7')
ax.plot(x, y)
ax.patch.set_alpha(0)ax.set_title("图形透明设置-图例透明")
ax.legend(['正弦曲线'], framealpha=0)plt.show()

3.6 设置【文本】透明

3.6.1 标题文本透明
  • 方法1
ax.set_title(title, alpha=0.5)
  • 方法2
plt.title(title, alpha=0.5)
  • 示意图

在这里插入图片描述

3.6.2 轴标签文本透明
  • 方法1
ax.set_xlabel('X Axis Label', alpha=0.5)
ax.set_ylabel('Y Axis Label', alpha=0.5)
  • 方法2
plt.xlabel("X Axis Label", alpha=0.5)
plt.ylabel("X Axis Label", alpha=0.5)
  • 示意图

3.6.3 图例文本透明
legend = ax.legend(['正弦曲线'], framealpha=0)
for text in legend.get_texts():text.set_alpha(0.1)  # 设置图例文本不透明度为 0.1
  • 示意图

3.6.4 刻度标签文本透明
  • 方法1
for label in ax.get_xticklabels() + ax.get_yticklabels():label.set_alpha(0.5)
  • 方法2
plt.setp(ax.get_xticklabels() + ax.get_yticklabels(), alpha=0.5)
  • 示意图

在这里插入图片描述

3.8 设置【坐标轴脊线】透明

3.8.1 方法1
plt.gca().spines['top'].set_alpha(0)
plt.gca().spines['right'].set_alpha(0)
plt.gca().spines['left'].set_alpha(0)
plt.gca().spines['bottom'].set_alpha(0)

或者

for spine in ['top', 'right', 'left', 'bottom']:plt.gca().spines[spine].set_alpha(0)
3.8.2 方法2
ax.spines['top'].set_alpha(0)
ax.spines['right'].set_alpha(0)
ax.spines['left'].set_alpha(0)
ax.spines['bottom'].set_alpha(0)

或者

for spine in ax.spines.values():spine.set_alpha(0)

或者

for spine in ['top', 'bottom', 'left', 'right']:ax.spines[spine].set_alpha(0)
3.8.3 示意图

在这里插入图片描述

3.8.4 部分示例代码
import matplotlib.pyplot as plt
import numpy as np# 统一设置
title = '图形透明设置-坐标轴脊线透明'# 设置中文字体
plt.rcParams['font.family'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False# 生成数据
x = np.linspace(0, 20, 100)
y = np.sin(x)# 创建图形和子图,并设置画布颜色为 #00C9A7
fig, ax = plt.subplots(figsize=(10, 6), dpi=150, facecolor='#00C9A7')
ax.plot(x, y)
ax.patch.set_alpha(0)ax.set_title(title, alpha=1)
ax.legend(['正弦曲线'], framealpha=0)
for spine in ax.spines.values():spine.set_alpha(0)# fig.savefig(f'保存的图片\\{title}.png', dpi=300)
# plt.show()

3.9 设置【刻度线】透明

3.9.1 方法
ax.tick_params(left=False, right=False, top=False, bottom=False)

其实这也不算透明了,是直接取消掉了

3.9.2 示意图

在这里插入图片描述

3.10 保存图像为透明

3.10.1 代码
plt.savefig("transparent_plot.png", transparent=True)
3.10.2 示意图

在这里插入图片描述

四、注意事项

  1. 透明度范围:透明度的取值范围为0到1,其中0表示完全透明,1表示完全不透明。如果参数是表示不透明度,那么和此处效果描述相反。
  2. 保存透明图像:在保存图像时,如果设置了transparent=True,整个图像的背景将是透明的。
  3. 图表叠加:在多图叠加时,合理设置透明度可以使图表更加美观,但要注意透明度过低可能导致图形难以辨识。
  4. 性能影响:过多使用透明效果可能会增加图像渲染的计算量,影响性能。

相关文章:

matplotlib库学习之绘图透明度设置(精炼准确)

matplotlib库学习之透明颜色设置 一、简介 在数据可视化中,透明度设置可以使图表更具层次感,特别是在多层叠加图表时。matplotlib库提供了多种方法来设置图表各个部分的透明度,包括图形、文本、图例、坐标轴等部分。 二、为什么要设置成透明…...

select多路复用(tcp通信)

文章目录 项目名称项目结构 项目名称 io_demo1 项目结构 $ tree . ├── build ├── CMakeLists.txt ├── debug.gdb ├── include │ ├── mysocket.h │ ├── tcp_client.h │ └── tcp_server.h ├── sources │ └── server.cpp └── src├─…...

STM32IIC与SPI详解

单片机里的通信协议其实蛮多的,IIC;SPI;MQTT;CAN;包括串口也是一种通信协议。而串口通信虽然实现了全双工,但需要至少三根线,为了节省这一根线的成本,于是IIC诞生了。 目录 一.IIC…...

K8s第三节:k8s1.23.1升级为k8s1.30.0

上回书说到我们使用了kubeadm安装了k8s1.23.1,但是在k8s1.24之前还是使用docker作为容器运行时,所以这一节我打算将我安装的k8s集群升级为1.30.0版本; 1、修改containerd 配置 因为我们安装的docker自带containerd,所以我们不需要重新安装con…...

.gitignore不生效的解决方案

为什么会不生效 因为文件已经被git追踪(或者说被track 或者说被索引,都是一个意思)。 目前.gitignore面对已经被git追踪的文件是无法生效的。(这是现状,我们只能接收这个现状。不过个人觉得git官方可以对这方面进行优化调整,让其…...

脱胎于 S 语言的R语言,Ross Ihaka 和 Robert Gentleman 和社区的力量让 R 在学术界与研究机构放光彩

R语言从一门用于统计学教学的编程语言,发展成为全球数据科学领域的重要工具,离不开其强大的功能、丰富的社区资源和开源精神。这些都离不开Ross Ihaka 和 Robert Gentleman 和 社区的力量。 在1990年代初,新西兰奥克兰大学的统计学教授Ross I…...

JavaEE 第6节 内存可见性问题以及解决方法

目录 一、什么是内存可见性问题? 1、问题代码演示 2、基础知识铺垫 1)硬件层面 2)模型层面(JMM) 二、内存可见性问题的原因 三、volatile解决内存可见性问题 一、什么是内存可见性问题? 1、问题代码…...

es基本操作

以下是一些 Elasticsearch 常用的命令,涵盖了索引管理、数据操作和集群管理等方面: 基本操作 检查集群状态: curl -X GET "localhost:9200/_cluster/health?pretty"查看集群健康状态和基本信息。 查看所有索引: curl…...

开源 AI 智能名片 S2B2C 商城小程序赋能下的社区团购商业模式研究

摘要:本文深入探讨了社区团购商业模式的本质、特点及其优势,并详细分析了开源 AI 智能名片 S2B2C 商城小程序在社区团购中的应用与价值。通过对相关案例的研究和数据的分析,揭示了这一创新组合对社区商业生态的重要影响,为未来社区…...

AutoSar AP软件规范中CM介绍及功能概要

1. 前言 为了理解AutoSar AP中EM的概念,生搬硬套的翻译了《 AUTOSAR SWS CommunicationManagement.pdf》的介绍部分,并按照自己的理解进行了修改。如下 2. AUTOSAR_SWS_CommunicationManagement.pdf的介绍部分 本文件包含AUTOSAR AP通信管理的功能、A…...

【图形学】TA之路-向量

向量 向量 是一个有大小和方向的数学对象。在三维空间中,向量通常表示为 (v_x, v_y, v_z)。 基本操作 加法: a b (a_x b_x, a_y b_y, a_z b_z)减法: a - b (a_x - b_x, a_y - b_y, a_z - b_z)标量乘法: k * v (k * v_x, …...

[flink]部署模式

部署模式 在一些应用场景中,对于集群资源分配和占用的方式,可能会有特定的需求。 Flink为各种场景提供了不同的部署模式,主要有以下三种:会话模式(Session Mode)、单作业模式(Per-Job Mode&…...

为什么不用postman做自动化

面试的时候被问到:为什么不用postman做自动化 打开postman,看到用例集管理、API 管理、环境管理这三个功能,用户体验感算得上品牌等级了 为什么不用呢,文心一言给了一些答案 不适合大规模自动化测试:Postman 主要是为…...

一、Matlab基础

文章目录 一、Matlab界面二、Matlab窗口常用命令三、Matlab的数据类型3.1 数值类型3.2 字符和字符串3.3 逻辑类型3.4 函数句柄3.5 结构类型3.6 细胞数组 四、Matlab的运算符4.1 算术运算符4.2 关系运算符4.3 逻辑运算4.4 运算符优先级 五、Matlab的矩阵5.1 矩阵的建立5.2 矩阵的…...

执行java -jar命令,显示jar中没有主清单属性

在Java中,一个"主清单属性"(Main-Class attribute)是指定JAR文件中包含的应用程序入口点,即包含main方法的类的完全限定名。如果你尝试运行一个没有主清单属性的JAR文件,你可能会看到错误消息,如…...

【C++进阶】红黑树

目录 什么是红黑树?红黑树红黑树的性质 定义红黑树红黑树的操作insertinorderfindheightsize构造函数析构函数赋值拷贝判断红黑树 全部代码总结 什么是红黑树? 红黑树 红黑树(Red-Black Tree)是一种自平衡的二叉搜索树&#xff…...

linux使用ssh连接一直弹出密码框问题

1.查看ssh服务的状态 输入以下命令: sudo service sshd status 小编已经安装了。 如果出现 Loaded: error (Reason: No such file or directory) 提示的话,说名没有安装ssh服务,按照第二步:安装ssh服务。 如果出现 Active: in…...

Python 3 数据结构

Python 3 数据结构 引言 Python 是一种高级编程语言,因其简洁明了的语法和强大的功能而广受欢迎。在 Python 中,数据结构是组织和存储数据的方式,对于编写高效和可维护的代码至关重要。本文将深入探讨 Python 3 中的主要数据结构&#xff0…...

【开源社区】Elasticsearch(ES)中空值字段 null_value 及通过exists查找非空文档

文章目录 0、声明1、问题描述2、问题剖析2.1 NULL或者空值类型有哪些2.2 案例讲解:尝试检索值为 null 的字段2.3 解决思路 3、使用 null_value 的诸多坑(避免生产事故)3.1 null_value 替换的是索引,并不会直接替换源数据3.2 不支持…...

JavaDS —— 位图(BitSet)与 布隆过滤器

位图 引入问题:给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中。 首先要注意 40 亿个数据如果使用 整型(int) 来存放的话,就是要 40 亿个整型,一个整型有…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色&#xf…...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本: 3.8.1 语言: JavaScript/TypeScript、C、Java 环境:Window 参考:Java原生反射机制 您好,我是鹤九日! 回顾 在上篇文章中:CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

面试高频问题

文章目录 🚀 消息队列核心技术揭秘:从入门到秒杀面试官1️⃣ Kafka为何能"吞云吐雾"?性能背后的秘密1.1 顺序写入与零拷贝:性能的双引擎1.2 分区并行:数据的"八车道高速公路"1.3 页缓存与批量处理…...

【免费数据】2005-2019年我国272个地级市的旅游竞争力多指标数据(33个指标)

旅游业是一个城市的重要产业构成。旅游竞争力是一个城市竞争力的重要构成部分。一个城市的旅游竞争力反映了其在旅游市场竞争中的比较优势。 今日我们分享的是2005-2019年我国272个地级市的旅游竞争力多指标数据!该数据集源自2025年4月发表于《地理学报》的论文成果…...

【题解-洛谷】P10480 可达性统计

题目:P10480 可达性统计 题目描述 给定一张 N N N 个点 M M M 条边的有向无环图,分别统计从每个点出发能够到达的点的数量。 输入格式 第一行两个整数 N , M N,M N,M,接下来 M M M 行每行两个整数 x , y x,y x,y,表示从 …...

数据挖掘是什么?数据挖掘技术有哪些?

目录 一、数据挖掘是什么 二、常见的数据挖掘技术 1. 关联规则挖掘 2. 分类算法 3. 聚类分析 4. 回归分析 三、数据挖掘的应用领域 1. 商业领域 2. 医疗领域 3. 金融领域 4. 其他领域 四、数据挖掘面临的挑战和未来趋势 1. 面临的挑战 2. 未来趋势 五、总结 数据…...

作为点的对象CenterNet论文阅读

摘要 检测器将图像中的物体表示为轴对齐的边界框。大多数成功的目标检测方法都会枚举几乎完整的潜在目标位置列表,并对每一个位置进行分类。这种做法既浪费又低效,并且需要额外的后处理。在本文中,我们采取了不同的方法。我们将物体建模为单…...