Matplotlib自定义辅助函数 (一):让你的图表大放异彩!

Matplotlib美化秘诀:自定义辅助函数,让你的图表大放异彩!

在这里插入图片描述

利用Matplotlib进行数据可视化示例

🌵文章目录🌵

  • 🌳一、创建自定义样式函数🌳
  • 🌳二、创建自定义颜色映射🌳
  • 🌳三、结尾🌳

🌳一、创建自定义样式函数🌳

  接下来,我们将通过一个简单的例子,展示如何创建一个自定义的辅助函数,为图表增添个性化风格。

import matplotlib.pyplot as plt

def custom_style():
    """
    ✨ 自定义图表样式,让你的图表独一无二!✨
    """
    # 使用seaborn的样式,这里可以选择其他样式,如'darkgrid', 'white', 'dark', 'ticks'等
    plt.style.use('seaborn-darkgrid')  # 使用seaborn的darkgrid样式,深色背景更显眼

    # 设置中文字体为SimHei,确保支持中文显示
    plt.rcParams['font.sans-serif'] = ['SimHei']
    # 设置字体大小
    plt.rcParams['font.size'] = 15

    # 设置坐标轴刻度标签的大小
    plt.rcParams['xtick.labelsize'] = 15
    plt.rcParams['ytick.labelsize'] = 15

    # 设置网格线样式
    plt.rcParams['grid.color'] = '0.75'  # 网格线颜色
    plt.rcParams['grid.linestyle'] = '--'  # 网格线样式,这里为虚线
    plt.rcParams['grid.linewidth'] = 1.0  # 网格线宽度

    # 设置坐标轴标签颜色
    plt.rcParams['axes.labelcolor'] = 'red'

    # 设置标题样式
    plt.rcParams['axes.titlesize'] = 20

# 使用自定义样式
custom_style()

# 绘制一个简单的折线图
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
plt.plot(x, y)
plt.title('自定义样式折线图 ')
plt.xlabel('X轴')
plt.ylabel('Y轴')
plt.show()

🎉 效果展示

Fig.1 自定义样式,为图表增添个性化风格

  这段代码定义了一个名为custom_style的辅助函数,用于自定义Matplotlib图表的样式。通过调用plt.style.use('seaborn-darkgrid'),它使用了Seaborn库中的darkgrid样式,为图表提供了一个🌙 深色背景,使其更显眼。此外,该函数还设置了中文字体为SimHei以确保中文显示,并调整了字体大小、坐标轴刻度标签大小、网格线样式、坐标轴标签颜色以及标题样式。🎯

  在代码的最后部分,使用这些自定义样式绘制了一个简单的折线图。📈 通过plt.plot(x, y)绘制了折线,并使用plt.title()plt.xlabel()plt.ylabel()分别设置了图表的标题、X轴标签和Y轴标签。最后,通过plt.show()展示了应用这些自定义样式后的效果。🎉

🌳二、创建自定义颜色映射🌳

完整代码:

import matplotlib.pyplot as plt
import matplotlib.colors as mcolors
import numpy as np


def create_categorical_colormap(categories, colors):
    """
    创建一个基于离散类别的自定义颜色映射。

    参数:
    categories (List[str]): 类别名称的列表。
    colors (List[Tuple[float, float, float]]): 与类别一一对应的 RGB 颜色列表。

    返回:
    matplotlib.colors.ListedColormap: 自定义的离散颜色映射。
    """
    # 检查类别和颜色列表的长度是否一致
    if len(categories) != len(colors):
        raise ValueError("The number of categories must match the number of colors.")

    # 构建颜色映射的字典
    cmap_dict = {cat: color for cat, color in zip(categories, colors)}

    # 创建 ListedColormap 对象
    cmap = mcolors.ListedColormap(colors)

    # 设置颜色映射的名称
    cmap.name = "CategoricalColormap"

    return cmap, cmap_dict


# 使用示例
categories = ["1", "2", "3", "4"]
colors = [(1, 0, 0), (0, 1, 0), (0, 0, 1), (0.5, 0.5, 0.5)]  # 红色、绿色、蓝色、灰色
categorical_cmap, cmap_dict = create_categorical_colormap(categories, colors)

# 示例数据
x = np.random.randint(0, 4, 100)
y = np.random.randint(0, 4, 100)

# 绘制散点图并应用自定义颜色映射
plt.scatter(x, y, c=y, cmap=categorical_cmap)
plt.colorbar(label='Categorical Color Map', ticks=range(len(categories)), orientation='vertical')
plt.show()

🎉 效果展示

Fig.2 自定义颜色映射,且颜色由数据的y值决定

  这段代码👆的功能是创建一个基于离散类别的自定义颜色映射,并通过散点图展示其实际应用效果。它首先定义了一个名为create_categorical_colormap的函数,该函数接收两个参数:类别名称的列表categories和与这些类别一一对应的RGB颜色列表colors。这个函数会检查这两个列表的长度是否一致,如果不一致则抛出异常。

  接下来,函数会创建一个字典cmap_dict,用于将每个类别映射到其对应的颜色。然后,它使用mcolors.ListedColormap创建一个ListedColormap对象cmap,该对象将用于在绘图时根据数据点的值选择相应的颜色。最后,函数给这个颜色映射设置了一个名字"CategoricalColormap",并返回这个颜色映射和之前创建的字典。

  在示例部分,代码定义了四个类别(1、2、3、4)和对应的四种颜色(红色、绿色、蓝色、灰色)。然后,它使用create_categorical_colormap函数创建了一个自定义的颜色映射,并生成了一些随机的示例数据。

  最后,代码使用plt.scatter函数绘制了一个散点图,其中每个数据点的颜色由其y值决定,并应用了之前创建的自定义颜色映射。plt.colorbar函数则用于在图中显示一个颜色条,以便更好地理解和解释数据点与颜色之间的对应关系。最终,plt.show函数展示了整个图形。😎

在上述代码块中,我们只需要简单修改几行代码,即可实现颜色条沿水平方向显示,并基于数据的x值决定颜色,如下:

# 源代码
plt.scatter(x, y, c=y, cmap=categorical_cmap)
plt.colorbar(label='Categorical Color Map', ticks=range(len(categories)), orientation='vertical')
plt.show()

# 修改代码
plt.scatter(x, y, c=x, cmap=categorical_cmap)
plt.colorbar(label='Categorical Color Map', ticks=range(len(categories)), orientation='horizontal')
plt.show()

🎉 效果展示

Fig.3 自定义颜色映射,且颜色由数据的x值决定

🌳三、结尾🌳

  亲爱的读者,感谢您每一次停留和阅读,这是对我们最大的支持和鼓励!🙏在茫茫网海中,您的关注让我们深感荣幸。您的独到见解和建议,如明灯照亮我们前行的道路。🌟若在阅读中有所收获,一个赞或收藏,对我们意义重大。

  我们承诺,会不断自我挑战,为您呈现更精彩的内容。📚有任何疑问或建议,欢迎在评论区畅所欲言,我们时刻倾听。💬让我们携手在知识的海洋中航行,共同成长,共创辉煌!🌱🌳感谢您的厚爱与支持,期待与您共同书写精彩篇章!

  您的点赞👍、收藏🌟、评论💬和关注💖,是我们前行的最大动力!

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

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

相关文章

预处理详解(下)

1.#运算符 #运算符将宏的一个参数转换为字符串字面量。它仅允许出现在带参数的宏的替换列表中。 #运算符所执行的操作可以理解为”字符串化“。 例如: 我们将打印的字符串中的n改为参数n,这样在传参的时候就也会随着变化。假如我们不将其改为参数n的话会发生什么呢…

黑马Java——异常、File、综合案例

一、异常 误区:不是让我们以后不出异常,而是出现异常了之后,如何去处理 1、异常的分类 1.1、Error 1.2、Exception 1.3、小结 2、编译时异常和运行时异常 2.1、编译时异常 2.2、运行时异常 2.3、为什么异常要分成编译时异常和运行时异常&…

随机过程及应用学习笔记(三)几种重要的随机过程

介绍独立过程和独立增量过程。重点介绍两种独立增量过程-—维纳过程和泊松过程。 目录 前言 一、独立过程和独立增量过程 1、独立过程(Independent Process) 2、独立增量过程(Independent Increment Process) 二、正态过程&am…

【c++】构造函数(上)

Hello everybody!今天我们来聊一聊构造函数的用法和一些基本性质。内容比较多,我打算分两篇文章讲完! 希望大家在看完我的文章后能够有所收获! 1.构造函数的定义 构造函数是特殊的成员函数,需要注意的是,构造函数虽然…

Editable Scene Simulation for Autonomous Driving via Collaborative LLM-Agents

ChatSim:首个通过大语言模型实现可编辑逼真3D驾驶场景的仿真 论文链接:https://arxiv.org/pdf/2402.05746.pdf 代码链接:https://github.com/yifanlu0227/ChatSim 1. 摘要(Abstract) 自动驾驶中的场景仿真因其生成定制…

【前端高频面试题--git篇】

🚀 作者 :“码上有前” 🚀 文章简介 :前端高频面试题 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬 前端高频面试题--git篇 常用命令git add 和 git stage 有什么区别怎么使用git连接到远程仓库git…

.target勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复

导言: 网络安全威胁如勒索病毒已经成为企业和个人数据安全的重大挑战之一。.target勒索病毒作为其中的一种,以其高度复杂的加密算法和迅速变化的攻击手法备受关注。本文将深入介绍.target勒索病毒的特点,探讨如何有效地恢复被加密的数据文件…

【复现】某某ERP 信息泄露漏洞_49

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一: 四.修复建议: 五. 搜索语法: 六.免责声明 一.概述 该ERP基于SpringBoot框架和SaaS模式,立志为中小企业提供开源好用的ERP软件,目前专注进销存财务生产功能。…

模拟电子技术——基本放大电路

文章目录 前言一、三极管输入输出特性三极管放大作用三极管电流放大关系三极管的特性曲线 二、基本放大电路-电路结构与工作原理基本放大电路的构成基本放大电路放大原理三种基本放大电路比较 三、基本放大电路静态工作点什么是静态工作点?静态工作点的作用估算法分…

耳机壳UV树脂制作私模定制耳塞需要什么样的设备和技术?

制作私模定制耳塞需要使用到一些特定的设备和技术,包括但不限于以下内容: 耳模制作工具:用于获取用户耳型的耳模制作工具,如硅胶、橡皮泥等。需要使用熟练的手法和技术,确保耳模的准确性和稳定性。UV树脂:…

ARP请求的构造过程

ARP请求的构造过程: ARP请求的构造: 当设备A(发起者)想要与设备B(目标)通信,但它只知道设备B的IP地址(例如,192.168.1.2),而不知道其MAC地址。设备…

Python数据科学:Scikit-Learn机器学习

4.1Scikit-Learn机器学习 Scikit-Learn使用的数据表示:二维网格数据表 实例1:通过Seaborn导入数据 def skLearn():scikit Learn基本介绍:return:import seaborn as sns#导入Iris数据集#注:一般网络访问不了iris sns.load_dataset(iris)ir…

Linux中alarm/setitimer函数(信号函数)

alarm函数 函数原型: unsigned int alarm(unsigned int seconds); 函数描述:设置定时器(闹钟)。在指定seconds后,内核会给当前进程发送 14)SIGALRM信号。进程收到该信号,默认动作终止。每个进程…

MySQL 基础知识(四)之表操作

目录 1 约束 2 查看已有表 3 创建表 4 查看表结构 5 修改表 6 删除表 1 约束 主键约束 primary key:唯一,标识表中的一行数据,此列的值不可重复,且不能为 NULL,此外,可以多个列组成主键唯一约束 uniq…

GitHub项目推荐-InstantID

项目地址 https://github.com/InstantID/InstantID 项目简述 InstantID是一个图生图项目,仅仅通过一张正脸的图片,就能生成各种风格的人像。该项目的文档描述比较齐备,所以复现起来成本比较小。 项目截图 这是项目介绍中的一张截图&…

2023全球云计算市场份额排名

关注卢松松,会经常给你分享一些我的经验和观点。 最近Synergy研究院发布了最新的全球云计算市场份额排名。 亚马逊依旧是以31%的的市场份额排名第一,微软azure24%排名第二,Google云11%排名第三,阿里云4%排名第四。腾讯云和IBM、…

Python爬虫之Ajax分析方法与结果提取

爬虫专栏:http://t.csdnimg.cn/WfCSx Ajax 分析方法 这里还以前面的微博为例,我们知道拖动刷新的内容由 Ajax 加载,而且页面的 URL 没有变化,那么应该到哪里去查看这些 Ajax 请求呢? 1. 查看请求 这里还需要借助浏…

matplotlib画简单的论文图像

由于最近论文里需要插入绘图,因此写一篇博客记录一下 折曲线图 基本绘图 在matplotlib中折线和曲线图是最常用和最简单的图。只需要直接使用方法plot即可。 import matplotlib.pyplot as plt plt.plot(x,y) plt.show()其中上述的代码中x,y分别是横坐…

【AI视野·今日CV 计算机视觉论文速览 第293期】Fri, 19 Jan 2024

AI视野今日CS.CV 计算机视觉论文速览 Fri, 19 Jan 2024 Totally 103 papers 👉上期速览✈更多精彩请移步主页 Daily Computer Vision Papers ParaHome: Parameterizing Everyday Home Activities Towards 3D Generative Modeling of Human-Object Interactions Aut…

矩阵特征值分解(EVD)

关于求解特征值和特征向量参考《特征值和特征向量-CSDN博客》