4个 Python 库来美化你的 Matplotlib 图表

Matplotlib是一个被广泛使用的Python数据可视化库,相信很多人都使用过。

但是有时候总会觉得,Matplotlib做出来的图表不是很好看、不美观。

今天我就给大家分享四个美化Matplotlib图表的Python库,它们可以轻松让你的Matplotlib图表变得好看~

而且每个方法都可以使用两行代码来实现,一条import语句和一条Matplotlib的使用语句。

尽管这些库非常适合创建酷炫的图表,但是你还是需要了解你的目标受众以及可能遇到的视觉问题,比如色盲等情况。

下面就让我们来一起看看吧!

在开始使用探索Matplotlib图表之前,先创建一些虚拟数据,用来生成图表。

几行代码轻松搞定。

import numpy as np   
# 生成 x 值  
x = np.linspace( 0 , 10 , 20 )   
# 生成 y 值  
y = np.sin(x)   
y2 = np.cos(x)

01 赛博朋克风格——mplcyberpunk

赛博朋克是一种科幻小说的子类型,以其反乌托邦、技术先进的世界和反文化态度而闻名。

场景通常以未来主义风格描绘,经常包括霓虹灯及明亮、鲜艳的色彩等元素。

比如,在制作海报或者是信息图表时,你需要额外的元素来吸引读者。这便是赛博朋克风格可以发挥作用的地方。

但是,你也要知道,它在为出版物创建图表或在论文中使用时可能会被视为不专业,并且可能不适合视觉有问题的读者。

要开始使用这个主题,需要先安装mplcyberpunk库。

# 安装  
pip install mplcyberpunk

使用赛博朋克主题,只需要调用plt.style.use(),并传入参数cypberpunk即可。

使用plt.scatter()绘制散点图。为了使我们的散点发光,还需要调用make_scatter_glow()函数。

import mplcyberpunk  
import matplotlib.pyplot as plt  
  
# 使用赛博朋克风样式  
plt.style.use('cyberpunk')  
plt.figure(figsize=(8, 8))  
  
# 散点图1  
plt.scatter(x, y, marker='o')  
mplcyberpunk.make\_scatter\_glow()  
  
# 散点图2  
plt.scatter(x, y2, marker='o', c='lime')  
mplcyberpunk.make\_scatter\_glow()  
  
# 坐标轴名称  
plt.xlabel('X-Axis')  
plt.ylabel('Y-Axis')  
  
# 显示  
plt.show()

运行上面的代码时,可以得到下图。

将赛博朋克主题应用到折线图中。为了使线条发光,我们可以调用make_lines_glow()。

# 使用赛博朋克风样式  
plt.style.use('cyberpunk')  
plt.figure(figsize=(8, 8))  
  
# 折线图  
plt.plot(x, y, marker='o')  
plt.plot(x, y2, marker='o', c='lime')  
  
# 发光效果  
mplcyberpunk.make\_lines\_glow()  
  
# 坐标轴名称  
plt.xlabel('X-Axis')  
plt.ylabel('Y-Axis')  
  
# 显示  
plt.show()

运行完成,将返回带有霓虹灯线条的图表。

我们还可以将图表效果更进一步,在线条和X轴之间添加渐变填充。

# 使用赛博朋克风样式  
plt.style.use('cyberpunk')  
plt.figure(figsize=(8, 8))  
  
# 折线图  
plt.plot(x, y, marker='o')  
plt.plot(x, y2, marker='o', c='lime')  
  
# 发光效果+渐变填充  
mplcyberpunk.add\_gradient\_fill(alpha\_gradientglow=0.5, gradient\_start='zero')  
  
# 坐标轴名称  
plt.xlabel('X-Axis')  
plt.ylabel('Y-Axis')  
  
# 显示  
plt.show()

这便创造了一个非常有趣的效果。

当然这个赛博朋克库还有其他的美化参数,大家可以去GitHub上查看使用。

地址:https://github.com/dhaitz/mplcyberpunk

02 Matplotx

matplotx库提供了一种简单的方法可以快速对matplotlib图表进行美化。

它包含几个可以便捷使用,且可应用于任何matplotlib图表的主题。

在深色主题的Jupyter Notebook或VSCode中处理图表时,出现亮白色的图表可能会有些许刺眼。

为了减少这种影响,我们可以将样式设为深色主题。但是,这需要好几行代码才能实现。

正如接下来所看到的,Matplotx使这个过程变得更加容易。由于它包含多个主题,我们可以轻松找到一个与VSCode主题相匹配的。

通过打开终端/命令提示符并运行以下命令,可以将Matplotx安装到你的Python环境中去。

# 安装  
pip install matplotx

安装好以后,可以使用with语句来调用plt.style.context和传入matplotx.styles。

在这里,我们可以选择众多的可用主题。 比如非常流行的Dracula主题。

import matplotx  
with plt.style.context(matplotx.styles.dracula):  
    # 散点图  
    plt.scatter(x, y, c=y2)  
    # 颜色类型  
    plt.colorbar(label='Y2')  
    # 坐标轴名称  
    plt.xlabel('X')  
    plt.ylabel('Y')  
    # 显示  
    plt.show()

运行代码,得到下图。

其中matplotx中有许多不同的样式,具体情况如下。

下面让我们用Pitaya Smoothie主题来创建一个折线图。

由于有多个子主题,我们需要使用方括号访问它们。

在这个例子中,我们有一个深色主题,所以我们需要传入「dark」参数才能使用。

with plt.style.context(matplotx.styles.pitaya\_smoothie\['dark'\]):  
    # 折线图  
    plt.plot(x, y, marker='o')  
    plt.plot(x, y2, marker='o')  
    # 坐标轴名称  
    plt.xlabel('X')  
    plt.ylabel('Y')  
    # 显示  
    plt.show()  

当我们运行上面的代码时,我们会得到下面这个折线图。

当然也有许多浅色主题。比如Pitaya Smoothie有一个,可以像这样使用。

with plt.style.context(matplotx.styles.pitaya\_smoothie\['light'\]):  

如果你想了解更多有关此库的信息,可以查看它的GitHub。

地址:https://github.com/nschloe/matplotx

03 量子黑色风格

QuantumBlack Labs是一家成立于2012年的公司,旨在帮助其他公司使用数据做出更好的决策。

他们使用机器学习和人工智能等先进技术来分析医疗保健、金融和交通等一系列行业的复杂数据集。

几年前,他们在GitHub上发布了自己的样式库。

地址:

https://github.com/quantumblacklabs/qbstyles

要使用该主题,我们需要安装这个Python库。

# 安装  
pip install qbstyles

安装好以后,就可以使用了~

from qbstyles import mpl\_style  
  
# 深色主题开  
mpl\_style(dark=True)  
  
# 深色主题关  
mpl\_style(dark=False)

来创建一个散点图,代码如下。

from qbstyles import mpl\_style  
  
# 深色主题  
mpl\_style(dark=True)  
# 非深色主题  
mpl\_style(dark=False)  
# 散点图  
plt.scatter(x, y, c=y2)  
# 颜色  
plt.colorbar(label='Y2')  
# 坐标轴名称  
plt.xlabel('X')  
plt.ylabel('Y')  
# 显示  
plt.show()

返回如下两种图表结果,具体取决于你选择的是浅色还是深色主题。

让我们看看深色主题的折线图是什么样子的。

# 深色主题  
mpl\_style(dark=True)  
  
# 折线图  
plt.plot(x, y, marker='o')  
plt.plot(x, y2, marker='o')  
  
# 坐标轴名称  
plt.xlabel('X')  
plt.ylabel('Y')  
  
# 显示  
plt.show()

当我们运行上面的代码时,我们会得到下面的图。

这个库的绘图样式与Matplotx中生成的绘图相比略有缓和。

但是,它确实感觉更专业一些,尤其是浅色主题的绘图。非常适合应用在专业演示或培训课程材料中。

04 科学图表

在撰写科学期刊或会议文章时,创建一个清晰、简单且易于解释的图表至关重要。

一些期刊,例如Nature,都是需要固定的样式,方便简化读者难以理解的图表。

这就是SciencePlots库的用武之地。 它经常被用于生成常见的科学期刊样式图表,从而使创建图表变得更加容易。

这个库的一大优点是它使图表适合黑白打印——这仍然是研究人员的普遍做法。通过更改线条样式或确保分类数据的散点图上有不同的形状,这将使得线条很容易区分。

如果您想探索SciencePlots中更多可用的样式,可以访问它的GitHub。

地址:

https://github.com/garrettj403/SciencePlots/wiki/Gallery

运行SciencePlots库需要在你的电脑上安装LaTeX。你可以下面的地址找到有关 LaTex以及如何安装等更多详细信息。

地址:https://www.latex-project.org/get/

在完成库的安装及LaTeX设置完成后,可以使用下面的代码创建一个科学绘图图表。

import scienceplots  
  
with plt.style.context(\['science', 'high-vis'\]):  
    # 新建画布  
    plt.figure(figsize=(6, 6))  
  
    # 折线图  
    plt.plot(x, y, marker='o', label='Line 1')  
    plt.plot(x, y2, marker='o', label='Line 2')  
  
    # 坐标轴名称  
    plt.xlabel('X')  
    plt.ylabel('Y')  
  
    # 图例  
    plt.legend()  
  
    # 显示  
    plt.show()

当我们运行上面的代码时,我们得到以下图表,这非常适合使用在期刊出版物中。

让我们看看IEEE风格是什么样的。我们可以通过修改参数来创建一个。

with plt.style.context(\['science', 'ieee'\]):

和上面的有点不一样,颜色也变了,但还是一个很好看的科学期刊图表。

这对于搞学术研究的同学帮助非常大。

通过使用SciencePlots,不再为调整大小、颜色和线条样式而烦恼。

05 总结

在本文中,我们看到了四个非常有用的matplotlib python库,它们可以让你的matplotlib图表更上一层楼。

这些库中的每一个都为你的绘图提供了独特的样式。

尽管这些样式提供了很好的创意可视化效果,但你也确实需要考虑你的受众。

创建出色的数据视觉效果的全部意义在于让你的信息易于理解,并尽可能以最好的方式分享你的故事。

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

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

相关文章

( “树” 之 DFS) 404. 左叶子之和 ——【Leetcode每日一题】

404. 左叶子之和 给定二叉树的根节点 root ,返回所有左叶子之和。 示例 1: 输入: root [3,9,20,null,null,15,7] 输出: 24 解释: 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24 示例 2: 输入: root [1]…

OpenGL入门教程之 深入理解

一、OpenGL简介 OpenGL是一种用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程规范。OpenGL包含一系列可以操作图形和图像的函数,但OpenGL没有实现这些函数,OpenGL仅规定每个函数应该如何执行以及其输出值(类似接口),所以OpenGL仅是一…

基于JSP的网上购物系统的设计与实现(论文+源码)_kaic

摘 要 近些年来,社会的生产力和科技水平在不断提高,互联网技术也在不断更新升级,网络在人们的日常生活中扮演着一个重要角色,它极大地方便了人们的生活。为了让人们实现不用出门就能逛街购物,网络购物逐渐兴起慢慢变得…

新一代AI带来更大想象空间!上海将打造元宇宙超级场景!

引子 上海市经信委主任吴金城4月12日在“2023上海民生访谈”节目表示,上海将着力建设元宇宙智慧医院、前滩东体元宇宙、张江数字孪生未来之城等元宇宙超级场景。 吴金城说,新一代人工智能将带来更大的想象空间。比如,人工智能和元宇宙数字人的…

ESP32设备驱动-SHT20温湿度传感器驱动

SHT20温湿度传感器驱动 文章目录 SHT20温湿度传感器驱动1、SHT20介绍2、硬件准备3、软件准备4、驱动实现1、SHT20介绍 Sensirion 的 SHT20 湿度和温度传感器已成为外形尺寸和智能方面的行业标准:嵌入在 3 x 3mm 封装和 1.1mm 高度的可回流焊双扁平无引线 (DFN) 封装中,它提供…

项目人力资源管理

相关概念 组织结构图:用图形表示项目汇报关系。最常用的有层次结构图、矩阵图、文本格式的角色描述等3种。 任务分配矩阵(或称责任分配矩阵)(RAM):用来表示需要完成的工作由哪个团队成员负责的矩阵,或需要完成的工作与哪个团队成员有关的矩阵。 一、规划人力资源管理(编…

动力节点Vue笔记——Vue与Ajax

四、Vue与AJAX 4.1 回顾发送AJAX异步请求的方式 发送AJAX异步请求的常见方式包括: 原生方式,使用浏览器内置的JS对象XMLHttpRequest const xhr new XMLHttpRequest()xhr.onreadystatechange function(){}xhr.open()xhr.send() 原生方式&#xff0…

zabbix客户端配置

一、zabbix客户端配置 1.实验环境:关闭防火墙和安全模块 systemctl disable --now firewalld setenforce 0 2.服务端和客户端都要时间同步 yum install -y ntpdate #注意安装需要用网络源安装,不能用本地源 ntpda…

google账号注册流程升级了!2023年谷歌gmail邮箱帐号注册申请教程(完整版)

google账号注册升级了! 2023年4月份google账号注册流程升级了,升级之前的版本是完成验证手机号码后才填写用户资料,升级之后的版本是需要先填写用户资料才能注册谷歌gmail邮箱帐号; 2023年谷歌gmail邮箱帐号注册申请教程 1、打开…

电子器件系列34:tvs二极管(2)

一、基本原理: 二、重要产数: 不同的资料对于相同的参数可能有不同的命名,要根据实际情况来确定参数的意义 这里以上图表格里的参数名称进行解析,以其他资料作为参考。 结合图表和伏安特性曲线,再结合下面的图我是…

这才是后端API该有的样子

一般系统大致架构如下: 有些小伙伴会说,这个架构太简单太low了吧,什么网关、缓存、消息中间件都没有。 需要说明的是,因为我们主题是API接口(tbAPI,pinduoduo API接口调用)所以聚焦这一点上就行…

Linux命令·ping

Linux系统的ping命令是常用的网络命令,它通常用来测试与目标主机的连通性,我们经常会说“ping一下某机器,看是不是开着”、不能打开网页时会说“你先ping网关地址192.168.1.1试试”。它通过发送ICMP ECHO_REQUEST数据包到网络主机&#xff08…

【小程序】django笔记2

templates路径除了在settings中的templates的DIR[]中申明还有什么别的方法? 已知,django底层根据app注册顺序查找各app文件中的templates文件夹,在其中搜索目标模版文件。 已知,app注册在settings中的INSTAll-APPS里。 已知&#…

C++ 缺省参数 函数重载 引用

缺省参数,我们先看一下什么是缺省参数 首先,这个是我们的需要传参的函数,这里我们传入 1 然后就输出 a 下面我们就看一下缺省参数 我们现在看main函数里面调用fun函数,这里会输出多少呢? OK 这里我们分别输出了0 和 1…

【2023】cookie是什么?有什么用?一篇文章彻底搞懂cookie

一个不大不小的问题 假设服务器有一个接口,通过请求这个接口,可以添加一个管理员 但是,不是任何人都有权力做这种操作的 那么服务器如何知道请求接口的人是有权力的呢? 答案是:只有登录过的管理员才能做这种操作 …

SpringCloud之OpenFeign介绍案例+相关面试题

概述 OpenFeign是一个声明式的WEB服务客户端,它使WEB服务客户端变得更加容易。具有可插拔的注解支持,SpringCloud中添加了SpringMVC注解的支持。SpringCloud中集成了Ribbon和Eureka,以及SpringCloud LoadBalance,以便在使用Feign时…

pyest+appium实现APP自动化测试,思路全总结在这里

目录 01、appium环境搭建 2、搭建pythonpytestappium环境 3、安装pycharm搭建项目编写脚本 4、执行测试 绵薄之力 01、appium环境搭建 安装nodejs http://nodejs.cn/ 为什么要安装nodejs? 因为appium这个工具的服务端是由nodejs语言开发的 安装jdk&#xf…

mysql数据库简介

1.什么是数据库:数据仓库。访问必须只能用SQL语句来访问。数据库也是一个文件的系统。 2.数据库的作用:存储数据的作用。开发任何的应用,都有数据库。 3.关系型的数据库:数据库中保存的都是实体与实体之间的关系。 4.常见的数据库…

2023接口自动化测试,完整入门篇

1. 什么是接口测试 顾名思义,接口测试是对系统或组件之间的接口进行测试,主要是校验数据的交换,传递和控制管理过程,以及相互逻辑依赖关系。其中接口协议分为HTTP,WebService,Dubbo,Thrift,Socket等类型,测试类型又主…

stata绘图指令

stata绘图指令 – 潘登同学的stata笔记 文章目录 stata绘图指令 -- 潘登同学的stata笔记 绘图概览韦恩图折线图连线图线性拟合图直方图 函数图添加特殊字符和文字 绘图概览 Stata 提供的图形种类: twoway 二维图scatter 散点图line 折线图area 区域图lfit 线性拟合…