【matplotlib】可视化解决方案——如何设置matplotlib风格集

news2025/1/12 1:04:11

概述

一般情况下,为了获得数据可视化展示效果,在代码实现的尾部会调用 plt.show(),这种情况下会调用默认的绘图风格,即白色底色,字体和线条呈现黑色。在某些情况下会显得很不协调。如果想要将展示效果以一个固定的风格进行显示,就需要利用到 matplotlib 风格集的相关知识。风格集的设置依赖于 plt.style.use() 方法,参数的取值就是一种风格的名称,可以通过 matplotlib.style.core.available() 方法查看当前支持的风格列表。

示例

查看所有可用风格

import matplotlib.pyplot as plt  
from matplotlib.style.core import available  
  
for style in available:  
    print(style)
--------------------------------
Solarize_Light2
_classic_test_patch
bmh
classic
dark_background
fast
fivethirtyeight
ggplot
grayscale
seaborn
seaborn-bright
seaborn-colorblind
seaborn-dark
seaborn-dark-palette
seaborn-darkgrid
seaborn-deep
seaborn-muted
seaborn-notebook
seaborn-paper
seaborn-pastel
seaborn-poster
seaborn-talk
seaborn-ticks
seaborn-white
seaborn-whitegrid
tableau-colorblind10

设置风格

import matplotlib.pyplot as plt  
from matplotlib.style.core import available, use  
import numpy as np  
  
# 使用ggplot风格  
use("ggplot")  
  
hex_html = ['#d73027', '#f46d43', '#fdae61', '#fee090', '#ffffbf', '#e0f3f8', '#abd9e9', '#74add1', '#4575b4']  
  
sample = 1000  
fig, ax = plt.subplots()  
  
for i in range(len(hex_html)):  
    y = np.random.normal(0, 0.1, size=sample).cumsum()  
    x = np.arange(sample)  
    ax.scatter(x, y, label=str(i), linewidth=0.1, edgecolors='grey', facecolor=hex_html[i])  
  
ax.set_title('User ggplot style', fontsize=20)  
ax.legend()  
plt.show()

画图效果如下:
在这里插入图片描述

这里需要强调一下,所谓 ggplot 风格是指 matplotlib 模拟了 R 语言中的【ggplot】软件绘图包的绘制风格,fivethirtyeight 是模仿了【fivethirtyeight. Com】网站中数据的展示风格。一句话解释,所有的风格都是模拟其他软件、网站的绘图效果。

为了更好展示各个风格的绘图效果,下面将会对比【ggplot】、【fivethirtyeight】、【seaborn】、【默认风格】和【classic】的绘图效果。

import matplotlib.pyplot as plt  
from matplotlib.style.core import available, use  
import numpy as np  

# 设置风格
DEFAULT_STYLE = 'classic'  
use(DEFAULT_STYLE)  
  
x = np.linspace(0, 2 * np.pi, 100)  
y = 1.85 * np.sin(x)  
y1 = 1.85 * np.sin(x) + np.random.randn(100)  
  
fig, ax = plt.subplots(2, 2)  
ax[0, 0].scatter(x, y1, s=50, c='dodgerblue')  
ax[0, 0].set_ylim(-5, 5)  
ax[0, 0].set_facecolor('lemonchiffon')  
  
ax[0, 1].plot(x, y, lw=3, color='yellowgreen')  
ax[0, 1].set_xlim(-1, 7)  
ax[0, 1].set_ylim(-5, 5)  
ax[0, 1].set_facecolor('lemonchiffon')  
  
ax[1, 0].plot(x, y, ls='--', lw=3, color='k')  
ax[1, 0].scatter(x, y1, s=50, c='r')  
ax[1, 0].set_ylim(-5, 5)  
ax[1, 0].set_facecolor('lemonchiffon')  
  
fig.suptitle(f'{DEFAULT_STYLE} style of subplot(2, 2)', fontsize=18, weight='bold', family='monospace')  
plt.show()

Ggplot 风格:
在这里插入图片描述

fivethirtyeight 风格:

在这里插入图片描述

seaborn 风格
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QJFQ8RwM-1677654694383)(【matplotlib】可视化解决方案——如何设置matplotlib风格集_image_4.png)]

默认风格:

在这里插入图片描述

classic 风格:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nxOqxoKj-1677654694384)(【matplotlib】可视化解决方案——如何设置matplotlib风格集_image_6.png)]

自定义风格文件

自定义的风格文件 (.mplstyle) 的保存路径为 ~/.matplotlib/stylelib,只要将文件放到这个路径下,mpl 就可识别到。

axes.titlesize      : 16
axes.labelsize      : 12
axes.labelcolor     : 657b83
axes.facecolor      : eee8d5
axes.edgecolor      : eee8d5
axes.axisbelow      : True

文中难免会出现一些描述不当之处(尽管我已反复检查多次),欢迎在留言区指正,相关的知识点也可进行分享,希望大家都能有所收获!!如果觉得我的文章写得还行,不妨支持一下。你的每一个转发、关注、点赞、评论都是对我最大的支持!

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

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

相关文章

华为OD机试用Python实现 -【称砝码】(2023-2-26华为OD机试人员抽到的真题)

华为OD机试题 华为 OD 机试 300 题大纲称砝码题目输入输出示例一输入输出说明:Python 代码展示编码思路华为 OD 机试 300 题大纲 参加华为 od 机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 OD 清单查看地址:blog.csdn.net/hihell/categor…

【JavaSE】集合(Map)

文章目录1.Map接口1.1常用方法1.2 遍历2.HashMap2.1Hash表数据结构2.2 Map.put实现原理2.3 Map.get实现原理2.4扩容2.5 同时重写hashCode和equals2.6 JAVA8对HashMap改进3.Hashtable4.Properties5.TreeMap5.1 概述5.2 自定义类实现Comparable6.集合工具类Collections1.Map接口 …

Linux | 1. 挂载新硬盘与磁盘管理

如有错误,恳请指出。 1. Ubuntu挂载新硬盘 查看磁盘状态:sudo fdisk -l 1)为新硬盘分区 使用 fdisk 指令对 /dev/sdb 进行分区操作:sudo fdisk /dev/sdb。进入分区工具后,我们可以输入 m 看指令说明,注意…

(四十八)大白话线上数据库不确定性的性能抖动优化实践(上)

之前我们花费了很大篇幅来给大家深入和细致的讲解数据库在执行增删改这类更新语句时候的底层原理,这里涉及到了很多数据库内核级的概念,比如buffer pool、redo log buffer、lru/flush链表,等等,大家对数据库执行更新语句的原理都有…

黑客入门破解网络密码常用的九个方法!

个人网络密码安全是整个网络安全的一个重要环节,如果个人密码遭到黑客破解,将引起非常严重的后果。比如,银行卡账户密码被盗,你就给别人打工了。所以,增强网民的网络安全意识是网络普及进程的一个重要环节。 常言道&am…

ThreadPoolExecutor执行流程和拒绝策略

【面试常考】 之前我们讲到的多线程案例里面的Executors 本质上是 ThreadPoolExecutor 类的封装. ThreadPoolExecutor 提供了更多的可选参数, 可以进一步细化线程池行为的设定. 什么是ThreadPoolExcutor类? 首先通过文档我们看看ThreadPoolExcutor提供给我们的构造…

超详细彻底卸载Anaconda详细教程

一、在开始出打开Anaconda Prompt 二、打开后,输入conda install tqdm -f命令并按回车键 conda install tqdm -f三、之后页面会出现一个WANNING,这个我们不用在意,之后会出现一个y/n提示框,在这里我们输入y或者Y y四、输入con…

小程序容器与微服务架构的关系

随着移动互联网的发展,小程序已经成为了一种非常流行的应用方式,它可以在不安装任何应用的情况下,直接在移动终端设备(如:App,iPad等)中运行。微服务架构则是一种的分布式系统架构,可…

SpringBoot整合MybatisPlus多数据源

相信在很多使用MybatisPlus框架的小伙伴都会遇到多数据源的配置问题,并且官网也给出了推荐使用多数据源 (dynamic-datasource-spring-boot-starter) 组件来实现。由于最近项目也在使用这个组件来实现多数据源切换,因此想了解一下该组件是如何运行的&…

以太网协议和DNS

目录 🐕今日良言:跨过困难,去迎接更好的自己. 🐳一、以太网桢格式 🐳二、DNS 🐕今日良言:跨过困难,去迎接更好的自己. 🐳一、以太网桢格式 数据链路层考虑的是相邻两个节点(通过网线/光纤/无线直接相连的两个设备…

有趣的表盘布局环绕动画

前言 C端的介绍页中,设计师设计动画特效都非常有意思。这次遇到了“表盘内容元素环绕效果”,类似于表盘中的分针在一格一格运动一样,只是这次动画运动的元素不一样。 效果如下: 实现表盘布局 合理的运用JavaScrip的三角函数&am…

Malware Dev 01 - 免杀之 PPID Spoofing 原理解析

写在最前 如果你是信息安全爱好者,如果你想考一些证书来提升自己的能力,那么欢迎大家来我的 Discord 频道 Northern Bay。邀请链接在这里: https://discord.gg/9XvvuFq9Wb我会提供备考过程中尽可能多的帮助,并分享学习和实践过程…

第十五天笔记

1. 编程实现计算2023-2-1到2023-3-1相隔多少天? from datetime import datetimestart_date_str "2023-2-1"end_date_str "2023-3-1"start_date datetime.strptime(start_date_str, "%Y-%m-%d")end_date datetime.strptime(end_d…

pmp项目管理考完有什么好处?

作为曾经5A(现在改3A了)通过考试的老学姐说下经验 做好规划 一定要合理安排自己预习、复习和做题的时间,提前规划。其中不要小看课前预习这件事,带着问题去上课,绝对能事半功倍。同时也能及时知道老师到底在讲解哪个知…

网络安全入门:不可不知的8款免费Web安全测试工具

随着 Web 应用越来越广泛,Web 安全威胁日益凸显。黑客利用网站操作系统的漏洞和 Web服务程序的 SQL 注入漏洞等得到Web服务器的控制权限,轻则篡改网页内容,重则窃取重要内部数据,更为严重的则是在网页中植入恶意代码,使…

互联网时代,学什么专业就业好?

互联网时代的手机、智能电视、家具、机械设备等各种有形产品都将会嵌入智能芯片,都会有嵌入式软件或App与之相连,从而形成智能产品。这是我们开启智能化硬件的开始,在这样的环境下,如果要问学什么就业最好?当然首选Jav…

串口、终端应用程序 API termios

UART简介 串口全称为串行接口,也称为COM接口,串行接口指的是比特一位位顺序传输,通信线路简单。使用两根线就可以实现双向通信,一条为TX,一个为RX。串口通信距离远,但速度相对慢,是一种常用的工…

软测入门(二)测试用例、自动化测试理念

测试用例(test case) 特性 有效性:测试用例能够被使用,且被不同的人员使用测试结果一致可复用性:如回归测试的使用可评估性可管理性 八大要素 测试编码:方便归档和查询测试模块/功能预置条件&#xff1a…

2023年功能测试还值得入行吗?

前言 鉴于笔者从13年入行IT行业,经历了只有开发没有测试的阶段,经历了14年只要会基本的功能测试在一线就能薪资过万的阶段,经历了17年只要会一点自动化,会一点性能就能蒙骗过面试官的阶段,更经历了19年所有面试官对于…

操作系统发展历程

手工操作阶段(此阶段无操作系统) 用户在计算机上算题的所有工作都要人工干预。该阶段有两个突出缺点: 用户独占全机,虽然不会出现因资源已被其他用户占用而等待的现象,但资源利用率低。 CPU等待手工操作,CPU的利用不充分 唯一的…