Python | 使用Matplotlib进行图案填充和边缘颜色分离的三种方法

Matplotlib是Python中功能强大的绘图库,允许广泛的自定义选项。一个常见的要求是分离出图中的图案填充和边缘颜色。默认情况下,Matplotlib中的填充颜色与边缘颜色相关联,但有一些方法可以独立自定义这些颜色。本文将深入研究如何实现这一点的技术细节,并提供分步说明和示例。

了解图案填充和边缘颜色

在Matplotlib中,影线是用于填充图中形状内部的图案,例如条形图中的条形。边缘颜色是这些形状的边框的颜色。默认情况下,图案填充颜色与边缘颜色相同,这可能会限制自定义。

为什么要分离图案填充和边缘颜色?

将图案填充和边缘颜色分离可能会带来好处,原因有几个:

  • 增强的视觉区分:不同颜色的图案填充和边缘可以使绘图更具视觉吸引力,更容易解释。
  • 出版要求:有些出版物需要特定的配色方案或图案。
  • 改进的可访问性:使用不同的颜色和图案可以使图更容易接近色觉缺陷的个人。

分离图案填充和边缘颜色的方法

在Matplotlib中有几种方法可以分离图案填充和边缘颜色:

方法1:使用rcParams

Matplotlib的rcParams允许全局自定义绘图属性。可以使用rcParams全局设置图案填充颜色。

import matplotlib.pyplot as plt

# Set global hatch color
plt.rcParams['hatch.color'] = 'blue'

# Create a bar plot
fig, ax = plt.subplots()
bars = ax.bar([1, 2, 3], [3, 2, 5], color='white', edgecolor='black', hatch='/', linewidth=2)

plt.show()

在这里插入图片描述
在此示例中,图案填充颜色全局设置为蓝色,而边缘颜色设置为黑色。

方法2:两次绘图

另一种方法是绘制两次条形图:一次用于图案填充,一次用于边缘。

import matplotlib.pyplot as plt

x = [1, 2, 3]
y = [4, 5, 6]

# Create the figure and axis
fig, ax = plt.subplots()

# Plot the hatch
bars = ax.bar(x, y, color='white', edgecolor='red', hatch='/', linewidth=2)

# Plot the edge
bars = ax.bar(x, y, color='none', edgecolor='black', linewidth=2)

plt.show()

在这里插入图片描述
此方法涉及使用所需的图案填充颜色绘制条形图,然后使用具有所需边缘颜色的条形图覆盖条形图。

方法3:自定义Patch对象

对于更高级的自定义,您可以直接在Matplotlib中修改Patch对象的属性。

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(4) + 1
y_red = [1, 3, 1, 4]
y_blue = [2, 2, 4, 1]

# Create the figure and axis
fig, ax = plt.subplots()

# Plot the bars with transparent face color
bars_red = ax.bar(x - 0.2, y_red, width=0.4, edgecolor='black', hatch='/', facecolor=(0, 0, 0, 0))
bars_blue = ax.bar(x + 0.2, y_blue, width=0.4, edgecolor='black', hatch='\\', facecolor=(0, 0, 0, 0))

# Customize the hatch color
for bar in bars_red:
    bar._hatch_color = (1.0, 0.0, 0.0, 1.0)  # Red hatch color

for bar in bars_blue:
    bar._hatch_color = (0.0, 0.0, 1.0, 1.0)  # Blue hatch color

plt.show()

在这里插入图片描述

注意事项和约束

虽然分离图案填充和边颜色提供了更大的灵活性,但仍存在一些注意事项和约束:

  • 性能:绘制两次(方法2)可能会影响大型数据集的性能。
  • 图例自定义:图例可能需要额外的自定义才能准确反映分离的颜色。
  • 版本兼容性:某些方法可能取决于所使用的Matplotlib版本。始终检查您正在使用的版本的文档。

总结

Matplotlib中的分离图案填充和边缘颜色增强了绘图的视觉吸引力和功能。通过使用rcParams、两次绘图和自定义Patch对象等方法,可以实现高级别的自定义。本文提供了关于如何实现这些技术的全面指南,并提供了完整的代码示例。尝试使用这些方法来创建符合您的特定要求和首选项的图。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

OpenStack 网络服务的插件架构

OpenStack 的网络服务具有灵活的插件架构,可支持多种不同类型的插件以满足不同的网络需求。以下是对 OpenStack 网络服务插件架构中一些常见插件类型的介绍: 一、SDN 插件 Neutron 与 SDN 的集成:在 OpenStack 网络服务里,SDN 插…

从 MySQL 到 ClickHouse 的迁移与优化——支持上亿级数据量的复杂检索

文章目录 1. ClickHouse 背景与使用场景1.1 ClickHouse 简介1.2 ClickHouse 的特点1.3 ClickHouse 的使用场景 2. 从 MySQL 到 ClickHouse 的迁移2.1 MySQL 与 ClickHouse 的对比2.2 迁移背景2.3 迁移注意事项2.3.1 数据模型设计2.3.2 数据迁移2.3.3 SpringBoot 项目改造2.3.4 …

08:软件定时器+中断管理

软件定时器中断管理 1、软件定时器2、中断管理2.1、中断屏蔽2.2、临界区 1、软件定时器 软件定时器是基于 FreeRTOS 内核提供的时间管理功能实现的,允许开发者创建、启动、停止、删除和管理定时器,从而实现在任务中对时间的灵活控制。 软件定时器硬件定…

数据结构《MapSet哈希表》

文章目录 一、搜索树1.1 定义1.2 模拟实现搜索 二、Map2.1 定义2.2 Map.Entry2.3 TreeMap的使用2.4 Map的常用方法 三、Set3.1 定义3.2 TreeSet的使用3.3 Set的常用方法 四、哈希表4.1 哈希表的概念4.2 冲突4.2.1 冲突的概念4.2.2 冲突的避免1. 选择合适的哈希函数2. 负载因子调…

蓝桥与力扣刷题(709 转换成小写字母)

题目:给你一个字符串 s ,将该字符串中的大写字母转换成相同的小写字母,返回新的字符串。 示例 1: 输入:s "Hello" 输出:"hello"示例 2: 输入:s "here…

unity学习16:unity里向量的计算,一些方法等

目录 1 unity里的向量: 2 向量加法 2.1 向量加法的几何意义 2.2向量加法的标量算法 3 向量减法 3.1 向量减法的几何意义 3.2 向量减法的标量算法 4 向量的标量乘法 5 向量之间的乘法要注意是左乘 还是右乘 5.1 注意区别 5.2 向量,矩阵&#x…

算法3(力扣83)-删除链表中的重复元素

1、题目:给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 2、实现( 因为已排序,所以元素若重复,必然在其下一位)(这里为在vscod…

深度学习基础知识

深度学习是人工智能(AI)和机器学习(ML)领域的一个重要分支,以下是对深度学习基础知识的归纳: 一、定义与原理 定义:深度学习是一种使计算机能够从经验中学习并以概念层次结构的方式理解世界的机…

基于mediapipe的手势游戏控制

基于mediapipe的手势游戏控制 ​ 玩游戏,那不是有手就行!!! mediapipe介绍 ​ Mediapipe是Google在2019年开发并提出的一款开源的跨平台多媒体处理框架,用于构建基于机器学习的应用程序,特别是涉及到计算机视觉、音频处理、姿势估计等领域。…

015: 深度学习之正向传播和反向传播

本文为合集收录,欢迎查看合集/专栏链接进行全部合集的系统学习。 合集完整版请参考这里。 上一节介绍了训练和推理的概念,这一节接着训练和推理的概念讲一下,神经网络的正向传播和反向传播。 正反向传播 其实单看正向传播和反向传播这两个…

2025.1.15——二、字符型注入

一、基本操作:整理已知信息,本题为字符型注入 二、解题步骤 step 1:确认为字符型注入 键入: 1 键入:1 and 12 # 发现报错 键入:1 and 11 # 未发现报错 所以确认为字符型注入 step 2:查询…

UML系列之Rational Rose笔记四:时序图(顺序图_序列图)

时序图有很多画法,这基本上能算rose里面要求最乱的一种图了;有些人的需求是BCE模式,这是正常规范点的,有些人就不需要,有些需要用数据库交互,有些不需要;没有一个较为统一的需求;在此…

LabVIEW水位监控系统

LabVIEW开发智能水位监控系统通过集成先进的传感技术与控制算法,为工业液体存储提供精确的水位调控,保证了生产过程的连续性与安全性。 项目背景 在化工和饮料生产等行业中,水位控制的准确性对保证生产安全和提高产品质量至关重要。传统的水…

STC的51单片机LED点灯基于KEIL

前言: 该文源于回答一个朋友的问题,代码为该朋友上传,略作修改,在此说明问题以及解决问题的思路,以减少新手错误。 电路图: 该位朋友未上传电路图,说明如下: stc8g1k08a-sop8控制…

基于YOLOv8的卫星图像中船只检测系统

基于YOLOv8的卫星图像中船只检测系统 (价格90) 使用的是 MASATI-V2 数据集 训练集 3617张 验证集 452张 测试集 453张 包含 [boat] [船只] 1个类 通过PYQT构建UI界面,包含图片检测,视频检测,摄像头实时检测。 (该系…

用 Python 自动化处理日常任务

💖 欢迎来到我的博客! 非常高兴能在这里与您相遇。在这里,您不仅能获得有趣的技术分享,还能感受到轻松愉快的氛围。无论您是编程新手,还是资深开发者,都能在这里找到属于您的知识宝藏,学习和成长…

mac intel芯片下载安卓模拟器

一、调研 目前主流两个模拟器: 雷神模拟器 不支持macosmumu模拟器pro版 不支持macos intel芯片 搜索到mumu的Q&A中有 “Intel芯片Mac如何安装MuMu?” q&a🔗:https://mumu.163.com/mac/faq/install-on-intel-mac.html 提…

python中的RPA->playwright自动化录制脚本实战案例笔记

playwright录制功能使用绕过登录操作 1、首先安装playwright pip install playwright2、 安装支持的浏览器 playwright install # 安装支持的浏览器:cr, chromium, ff, firefox, wk 和 webkit3、接着在自己的项目下运行录制命令: playwright codegen…

【原创】大数据治理入门(2)《提升数据质量:质量评估与改进策略》入门必看 高赞实用

提升数据质量:质量评估与改进策略 引言:数据质量的概念 在大数据时代,数据的质量直接影响到数据分析的准确性和可靠性。数据质量是指数据在多大程度上能够满足其预定用途,确保数据的准确性、完整性、一致性和及时性是数据质量的…

数据结构(Java版)第八期:LinkedList与链表(三)

专栏:数据结构(Java版) 个人主页:手握风云 目录 一、链表中的经典面试题 1.1. 链表分割 1.2. 链表的回文结构 1.3. 相交链表 1.4. 环形链表 一、链表中的经典面试题 1.1. 链表分割 题目中要求不能改变原来的数据顺序,也就是如上图所示。…