python画图|图像背景颜色设置

python画图出来的默认图形背景是白色,有时候并不适合大家表达想要表达的意思。

因此,我们很有必要掌握自己设置图形背景颜色的技巧。

【1】官网教程

首先请各位看官移步官网,看看官网如何设置,下述链接可轻松到达:

Color Demo — Matplotlib 3.9.2 documentation

官网代码非常简洁,图形也很漂亮,为此,很有必要读懂代码。

【2】读懂代码

首先,计算模块nump和画图模块matplotlib引入:

import matplotlib.pyplot as plt #引入matplotlib模块画图
import numpy as np #引入numpy模块做数学计算

然后即刻定义了变量:

t = np.linspace(0.0, 2.0, 201) #定义自变量
s = np.sin(2 * np.pi * t) #定义因变量

 再之后进行了颜色定义:

# 1) RGB tuple:
fig, ax = plt.subplots(facecolor=(.18, .31, .31)) #定义要画图,图形背景颜色RGB=(.18, .31, .31)
# 2) hex string:
ax.set_facecolor('#eafff5')

根据colors页面的说法,这两个可能是重复定义,1)是按照RGB的形式定义颜色,2)是按照六位字符的形式定义颜色。

为此,我们将在第三章做一个测试,此处继续解读代码。

剩余部分比较简单,分别设置X轴和Y轴的标签颜色:

ax.set_xlabel('Time [s]', color='c') #设置X轴名称,颜色为青绿色
# 5) a named color:
ax.set_ylabel('Voltage [mV]', color='peachpuff') #设置Y轴名称,颜色为peachpuff

然后设置了图形的线型和颜色:

# 6) a named xkcd color:
ax.plot(t, s, 'xkcd:crimson') #画图,t为自变量,s为因变量
# 7) Cn notation:
ax.plot(t, .7*s, color='C4', linestyle='--') #画图,t为自变量,.7*s为因变量
# 8) tab notation:
ax.tick_params(labelcolor='tab:orange') #对轴标签的颜色按照橙色设置

最后表示要输出图形:

plt.show() #输出图形

输出结果为:

bd10374fdb614b6ab42953a05985fc91.png

图1

【3】测试代码

前述已经提及,设置背景颜色有GRB和六位字符两种方式,因此官网代码算是重复定义,因此尝试将两种定义方法并列输出。

首先定义并列画图:

fig, [ax1,ax2] = plt.subplots(1,2)

然后分别为ax1和ax2设置颜色:

ax1.set_facecolor((.18, .31, .31))
# 2) hex string:
ax2.set_facecolor('#eafff5')

之后为X轴和Y轴的设置,保持ax1和ax2完全一致:

# 3) gray level string:
ax2.set_title('Voltage vs. time chart', color='0.7') #设置图名,颜色
# 4) single letter color string
ax2.set_xlabel('Time [s]', color='c') #设置X轴名称,颜色为青绿色
# 5) a named color:
ax2.set_ylabel('Voltage [mV]', color='peachpuff') #设置Y轴名称,颜色为peachpuff
# 6) a named xkcd color:
ax2.plot(t, s, 'xkcd:crimson') #画图,t为自变量,s为因变量
# 7) Cn notation:
ax2.plot(t, .7*s, color='C4', linestyle='--') #画图,t为自变量,.7*s为因变量
# 8) tab notation:
ax2.tick_params(labelcolor='tab:orange') #对轴标签的颜色按照橙色设置

此时的完整代码为:

import matplotlib.pyplot as plt #引入matplotlib模块画图
import numpy as np #引入numpy模块做数学计算t = np.linspace(0.0, 2.0, 201) #定义自变量
s = np.sin(2 * np.pi * t) #定义因变量# 1) RGB tuple:
fig, [ax1,ax2] = plt.subplots(1,2,) #定义要画图,图形背景颜色RGB=(.18, .31, .31)
ax1.set_facecolor((.18, .31, .31))
# 2) hex string:
ax2.set_facecolor('#eafff5')
# 3) gray level string:
ax1.set_title('Voltage vs. time chart', color='0.7') #设置图名,颜色
# 4) single letter color string
ax1.set_xlabel('Time [s]', color='c') #设置X轴名称,颜色为青绿色
# 5) a named color:
ax1.set_ylabel('Voltage [mV]', color='peachpuff') #设置Y轴名称,颜色为peachpuff
# 6) a named xkcd color:
ax1.plot(t, s, 'xkcd:crimson') #画图,t为自变量,s为因变量
# 7) Cn notation:
ax1.plot(t, .7*s, color='C4', linestyle='--') #画图,t为自变量,.7*s为因变量
# 8) tab notation:
ax1.tick_params(labelcolor='tab:orange') #对轴标签的颜色按照橙色设置# 3) gray level string:
ax2.set_title('Voltage vs. time chart', color='0.7') #设置图名,颜色
# 4) single letter color string
ax2.set_xlabel('Time [s]', color='c') #设置X轴名称,颜色为青绿色
# 5) a named color:
ax2.set_ylabel('Voltage [mV]', color='peachpuff') #设置Y轴名称,颜色为peachpuff
# 6) a named xkcd color:
ax2.plot(t, s, 'xkcd:crimson') #画图,t为自变量,s为因变量
# 7) Cn notation:
ax2.plot(t, .7*s, color='C4', linestyle='--') #画图,t为自变量,.7*s为因变量
# 8) tab notation:
ax2.tick_params(labelcolor='tab:orange') #对轴标签的颜色按照橙色设置plt.show() #输出图形

运行后输出结果为:

453d8d711734433b97af3fb9da6ce998.png

图2

由图2可见,每个图都按照自己的颜色铺满了坐标轴,和图1不一样,图1整个背景颜色与图2左侧一致,坐标轴内部颜色和图2右侧一致。

因此尝试追溯不同,仔细对比会发现:图1对应代码再subplots中设置了颜色,图2对应代码直接删除了,因此尝试把图2代码更改为:

fig, [ax1,ax2] = plt.subplots(1,2,facecolor=(.18, .31, .31))

此时我们获得了期待的图片:

9558999e7ee2402b9ca5df776b161e41.png

图3

由此可见:在subplots中定义的facecolor,设置了整个画图区域的背景颜色,单个ax.set_facecolor()设置的是坐标轴内部的颜色。

【4】总结

掌握了图像全区域背景颜色设置和坐标轴区域颜色设置技巧。

 

 

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

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

相关文章

如何将很多个pdf拼接在一起?很多种PDF拼接的方法

如何将很多个pdf拼接在一起?将多个PDF文件合并不仅能够提升信息的整合性,还能使文件管理更加高效。想象一下,你需要向同事或老师提交一份综合报告,其中包含了多份相关资料。如果每个文件单独存在,查找和传输都会变得繁…

IDEA中Quarkus框架(3.13版本)开发、调试、部署、打包等

code-with-quarkus code-with-quarkus 是使用官网生成的demo项目 这个项目使用Quarkus(使用3.13.0版本,该版本支持JDK21),超音速亚原子Java框架。官网地址: https://quarkus.io/. 环境要求 OS: Windows 10.0 jdk 11 maven 3.9…

2024年研赛-华为杯数模竞赛F题论文首发+论文讲解

本届研赛助攻题目 C D F三题论文均已经全部完成。后更新计划 如图所示。 免费给大家分享 三个问题的论文部分代码 2024年华为杯-研赛分享资料(论文部分代码)(已更新部分代码): 链接:https://pan.baidu.com…

【Pyside】pycharm2024配置conda虚拟环境

知识拓展 Pycharm 是一个由 JetBrains 开发的集成开发环境(IDE),它主要用于 Python 编程语言的开发。Pycharm 提供了代码编辑、调试、版本控制、测试等多种功能,以提高 Python 开发者的效率。 Pycharm 与 Python 的关系 Pycharm 是…

springboot实战学习笔记(5)(用户登录接口的主逻辑)

接着上篇博客学习。上篇博客是已经基本完成用户模块的注册接口的开发以及注册时的参数合法性校验。具体往回看了解的链接如下。 springboot实训学习笔记(4)(Spring Validation参数校验框架、全局异常处理器)-CSDN博客文章浏览阅读576次,点赞7…

Java免税商品购物商城:Spring Boot实现详解

第一章 绪论 1.1 课题开发的背景 从古至今,通过书本获取知识信息的方式完全被互联网络信息化,但是免税商品优选购物商城,对于购物商城工作来说,仍然是一项非常重要的工作。尤其是免税商品优选购物商城,传统人工记录模式…

【Proteus仿真】基于51单片机的L298N电机电速调节

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机,L298N电机驱动连接电机,采用调节PWM占空比来控制电机速度转动。 仿真图: 编辑 二、硬件资源 基于KEIL5编写C代码,PROTEUS8.15进行…

SQL - 进阶语法(一)

1. SELECT TOP SELECT TOP Number|Percentage column1 from ... 选择所需要的数据的前多少行,Number表示具体数值,Percentage表示百分比 2. LIKE 搜索列元素的指定模式,匹配对应的信息进行自定义搜索 通常需要搭配通配符进行使用 %替代…

Postman cURL命令导入导出

导入cURL命令 cURL是一种用于发出HTTP请求的流行命令行工具。在测试Web应用程序或API时,cURL使您能够直接从命令行进行交互,使用API开发人员社区中常见的完善语法。如果在不同的地方有多个cURL命令,可以将它们导入Postman。 ​ 将cURL命令导入…

1.5 计算机网络的分层结构

欢迎大家订阅【计算机网络】学习专栏,开启你的计算机网络学习之旅! 文章目录 前言1 分层设计2 网络体系结构2.1 基本概述2.2 常见的三种网络体系结构 3 各层之间的关系3.1 水平关系3.2 垂直关系 4 数据传输过程4.1 水平视角4.2 垂直视角 前言 在当今数字…

【推广】图书|2024新书《大模型RAG实战:RAG原理、应用与系统构建》汪鹏、谷清水、卞龙鹏等,机械工业出版社

探索RAG系统新高度:《大模型RAG实战:RAG原理、应用与系统构建》 随着大模型技术的爆发,尤其是ChatGPT之后,以ChatPDF为首的知识库问答产品迅速走红,引发了RAG(检索增强生成)系统的广泛关注与讨论…

EfficientFormer实战:使用EfficientFormerV2实现图像分类任务(二)

文章目录 训练部分导入项目使用的库设置随机因子设置全局参数图像预处理与增强读取数据设置Loss设置模型设置优化器和学习率调整策略设置混合精度,DP多卡,EMA定义训练和验证函数训练函数验证函数调用训练和验证方法 运行以及结果查看测试完整的代码 在上…

macOS平台编译libidn2库给iOS及macOS用

1.克隆源码: git clone https://gitlab.com/libidn/libidn2.git --recursive 2.安装依赖库: pkg-config也要安装 3.启动bootstrap生成configure 配置成功 configure生成成功

TikTok提示“Network is out of reach”怎么处理?

当TikTok提示“Network is out of reach”时,意味着应用无法连接到互联网。导致这一问题的常见原因包括网络连接不稳定、地理限制或网络设置与应用不兼容等。解决方法有:拔除手机卡、关闭手机定位服务、切换至稳定的海外IP网络等。使用TikTok专用网络也可…

数据结构字节对齐

求 sizeof(name1)?(晟安信息) struct name1{ char str; short x; int num; }; 8 分析:char 1字节,short 2字节,int 4字节;所以以4字节为一个步长,需要2步长,所以sizeof(name1)为8。 (电工时代) …

C++入门基础知识79(实例)——实例 4【求商及余数】

成长路上不孤单😊😊😊😊😊😊 【14后😊///C爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于C 实例 【求商及余数】相关内容&#xf…

【Go】Go 环境下载与安装教程(Windows系统)

引言 Go,也被称为Golang,是一种静态类型,编译型的编程语言,由Google设计和开发。Go语言的设计目标是“解决软件开发中的一些问题”,特别是在大规模软件系统的构建和维护方面。 下载安装包 打开官网下载页面&#xff…

查找算法 03散列查找

自己设计一个散列表,总长度由你决定,并设计一个合理的散列函数,使用线性探测法解决冲突 基于上述散列表,设计不少于10个元素的插入序列,依次插入散列表,画出散列表最终的样子(插入过程至少发生…

javase复习day29 io

高级流 缓冲流效率较高。 字节缓冲流 public class Demo1 {public static void main(String[] args) throws IOException {BufferedInputStream bis new BufferedInputStream(new FileInputStream("javaseday29\\a.txt"));BufferedOutputStream bos new BufferedO…

Python | Leetcode Python题解之第424题替换后的最长重复字符

题目&#xff1a; 题解&#xff1a; class Solution:def characterReplacement(self, s: str, k: int) -> int:num [0] * 26n len(s)maxn left right 0while right < n:num[ord(s[right]) - ord("A")] 1maxn max(maxn, num[ord(s[right]) - ord("…