Matplotlib图形配置与样式表_Python数据分析与可视化

Matplotlib图形配置与样式表

  • 配置图形
  • 修改默认配置rcParams
  • 样式表

Matplotlib的默认图形设置经常被用户诟病。虽然2.0版本已经有了很大改善,但是掌握自定义配置的方法可以让我们打造自己的艺术风格。

配置图形

我们可以通过修个单个图形配置,使得最终图形比原来的图形更好看。可以为每个单独的图形进行个性化设置。这里我们通过手动调整,将matplotlib土到掉渣的默认直方图修改成美图:

import matplotlib.pyplot as plt
plt.style.use('classic')
import numpy as np
x = np.random.randn(1000)
plt.hist(x);
# 用灰色背景
ax = plt.axes(facecolor='#E6E6E6')
ax.set_axisbelow(True)
# 画上白色的网格线
plt.grid(color='w', linestyle='solid')
# 隐藏坐标轴的线条
for spine in ax.spines.values():
    spine.set_visible(False)
ax.xaxis.tick_bottom()
ax.yaxis.tick_left()
# 弱化刻度与标签
ax.tick_params(colors='gray', direction='out')
for tick in ax.get_xticklabels():
    tick.set_color('gray')
for tick in ax.get_yticklabels():
    tick.set_color('gray')
# 设置频次直方图轮廓色与填充色
ax.hist(x, edgecolor='#E6E6E6', color='#EE6666')
plt.show()

在这里插入图片描述

修改默认配置rcParams

通过手动配置确实能达到我们想要的效果,但是如有很多个图形,我们肯定不希望对每一个图都这样手动配置一番。

matplotlib作为一个强大的工具当然有方法可以让我们只配置一次默认图形,就可以应用到所有图形上。

这个方法就是通过修改默认配置rcParamsmatplotlib在每次加载的时候,都会定义一个运行时配置rc,其中包含了我们创建的图形元素的默认风格。

from matplotlib import cycler
import matplotlib.pyplot as plt
import numpy as np
colors = cycler('color',['#EE6666', '#3388BB', '#9988DD','#EECC55', '#88BB44', '#FFBBBB'])
plt.rc('axes', facecolor='#E6E6E6', edgecolor='none',axisbelow=True, grid=True, prop_cycle=colors)
plt.rc('grid', color='w', linestyle='solid')
plt.rc('xtick', direction='out', color='gray')
plt.rc('ytick', direction='out', color='gray')
plt.rc('patch', edgecolor='#E6E6E6')
plt.rc('lines', linewidth=2)
x = np.random.randn(1000)
plt.hist(x)#画直方图
plt.show()
for i in range(4):
    plt.plot(np.random.rand(10))#折线图
plt.show()

在这里插入图片描述

在这里插入图片描述

所有rc设置都存储在一个名为matplotlib.rcParams的类字典变量中,可以通过这个变量来查看我们的配置。rc的第一个参数是希望自定义的对象,如figureaxesgrid等。其后可以跟上一系列的关键字参数。

样式表

matplotlib1.4版本中增加了一个非常好用的style模块,里面包含了大量的新式默认样式表,还支持创建和打包自己的风格。通过plt.style.available命令可以看到所有可用的风格。

 plt.style.available[:5]#查看前5个风格样式
'''
输出:['bmh', 'classic', 'dark_background', 'fast', 'fivethirtyeight']
'''

使用某种样式表的基本方法为plt.style.use('stylename'),这样就改变后面代码的所有风格。支持组合样式,通过传递样式列表可以轻松组合这些样式。如果需要,也可以使用风格上下文管理器临时更换风格:

with plt.style.context('stylename'):
    make_a_plot()

首先创建一个画两种基本图形的函数:

def hist_and_lines():
    np.random.seed(0)
    fig, ax = plt.subplots(1, 2, figsize=(11, 4))
    ax[0].hist(np.random.randn(1000))
    for i in range(3):
        ax[1].plot(np.random.rand(10))
        ax[1].legend(['a', 'b', 'c'], loc='lower left')
    plt.show()

在这里插入图片描述

再通过修改风格绘制图形:

with plt.style.context('fivethirtyeight'):
    hist_and_lines()

在这里插入图片描述

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

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

相关文章

搜索引擎语法

演示自定的Google hacking语法,解释含意以及在渗透过程中的作用 Google hacking site:限制搜索范围为某一网站,例如:site:baidu.com ,可以搜索baidu.com 的一些子域名。 inurl:限制关键字出现在网址的某…

【数据分享】我国12.5米分辨率的坡度数据(免费获取)

地形数据,也叫DEM数据,是我们在各项研究中最常使用的数据之一。之前我们分享过源于NASA地球科学数据网站发布的12.5米分辨率DEM地形数据(可查看之前的文章获悉详情),这个DEM数据的优点是精度高。 基于DEM地形数据&…

【OpenGauss源码学习 —— 执行算子(Merge Join 算子)】

执行算子(Merge Join 算子) 连接算子Merge Join 算子ExecInitMergeJoin 函数MergeJoin 结构体 ExecMergeJoin 函数MergeJoinState 结构体 ExecEndMergeJoin 函数 总结 声明:本文的部分内容参考了他人的文章。在编写过程中,我们尊重…

阿里云windwos 安装oracle数据库,外部用工具连接不上,只能在服务器本机通过127.0.0.1 连接

1. 首先检查阿里云服务器安全组端口是否开放 oracle 数据库端口 2. 其次找到oracle 安装的目录,打开这俩个文件,将localhost 修改为 服务器本机名称 3.重启oracle 监听服务,就可以连接了

新手如何买卖基金,基金投资基础入门

一、教程描述 本套基金教程,大小2.50G,共有13个文件。 二、教程目录 第01课:基金入门,学会投资其实不难.mp4 第02课:基金分类,琳琅满目清清楚楚.mp4 第03课:以稳取胜,稳健基金稳…

程序的编译与链接(详解)

程序的编译与链接 本章内容如下: 1:程序的翻译环境与执行环境的介绍 2:详解程序的翻译环境(编译链接) 2.1预处理阶段干了啥2.2编译阶段干了啥2.3汇编阶段干了啥2.4链接阶段干了啥 3:预处理详解 预定义符号的介绍#define 的介绍(宏与标识符号)#与##的介绍宏与函数…

【MinIO】几个有用的方法

在windows总安装Minio 这是一篇不错的安装指南 进入网址 在Windows安装时,选择相应的exe文件下载,下载到本地后,使用如下的命令即可在前台启动: minio.exe server D:\your_path 或者将该路径写进环境变量的path中,…

怎么当代课老师教学生

老师朋友们,有没有帮忙当过代课老师呢?或者,没当过的老师是不是对这种职业充满了好奇?让我来分享一下,当代课老师的日常是什么样的吧! 备课 说起备课,那可是个大工程!不过&#xff…

微信消息推送说明

1 打开任务清单 2 编辑任务清单设置 名字解释 姓名:微信名字 内容:要发送消息 定时:从几点开始发送 每隔几分钟:每隔几分钟重复发送一次 重复次数:每隔几分钟重复发送几次 响玲:定时语音电话&#x…

掌握高效性能测试技能:JMeter基础入门!

一、JMeter基础 A、JMeter介绍 Apache JMeter是Apache组织开发的基于Java的压力测试工具。 Apache JMeter may be used to test performance both on static and dynamic resources (files, Servlets, Perl scripts, Java Objects, Data Bases and Queries, FTP Servers and …

Unity UGUI的自动布局-LayoutGroup(水平布局)组件

Horizontal Layout Group | Unity UI | 1.0.0 1. 什么是HorizontalLayoutGroup组件? HorizontalLayoutGroup是Unity UGUI中的一种布局组件,用于在水平方向上对子物体进行排列和布局。它可以根据一定的规则自动调整子物体的位置和大小,使它们…

机器人规划算法——movebase导航框架源码分析

这里对MoveBase类的类成员进行了声明,以下为比较重要的几个类成员函数。 构造函数 MoveBase::MoveBase | 初始化Action 控制主体 MoveBase::executeCb收到目标,触发全局规划线程,循环执行局部规划 全局规划线程 void MoveBase::planThread |…

[黑马程序员SpringBoot2]——原理篇1

目录: bean的加载方式(—)bean的加载方式(二)bean的加载方式(三)FactoryBeanproxyBeanMethod属性bean的加载方式(四)bean的加载方式(五)bean的加载方式(六)bean的加载方式(七)bean的加载方式(八)bean加载控制(编程式)bean加载控制(注解式)be…

前缀和+哈希表——560. 和为 K 的子数组

文章目录 🪐1. 题目🌟2. 算法原理⭐解法一:暴力枚举⭐解法二:前缀和哈希表 🌞3. 代码实现 🪐1. 题目 题目链接:560. 和为 K 的子数组 - 力扣(LeetCode) 给你一个整数数组…

每日一题:LeetCode-102.二叉树的层序遍历

每日一题系列(day 03) 前言: 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 &#x1f50e…

SAP smartform 实现打印条形码

先在SE73里定义一个新的BARCODE,注意一定要用新的才可以,旧的是打印不出来的。 然后定义一个SMARTFORM的样式,把你定义的BARCODE放到字符样式里面去。 再做SMARTFORM就可以了,将需要作为条码的变量的格式选为该BARCODE格式&…

是否有无限提取的代理IP?作为技术你需要知道这些

最近有互联网行业的技术小伙伴问到,有没有可以无限提取的代理IP?就是比如我一秒钟提取几万、几十万次,或者很多台机器同时调用API提取链接,这样可以吗?看到这个问题,不禁沉思起来,其实理论上是存…

cocos游戏引擎,弹出框浏览器正常,但到了抖音、微信小游戏就不显示的bug原因及解决办法

本篇文章主要讲解:cocos游戏引擎,浏览器测试时弹出框好好的,无任何报错,构建项目到抖音、微信小游戏时无法弹出弹出框,但又无报错的问题原因及解决办法。 日期:2023年11月25日 作者:任聪聪 问题…

linux系统中select函数的用法实现

前言: select机制已经被很多人都讲解过,select使用起来也不是特别难,为什么还要花时间再次讲解select机制? 在回答这个问题之前,我们先问一下自己,是否有足够的信心保证在使用select编程时不出错&#xf…

【数字图像处理】均值滤波与中值滤波

在数字图像处理中,均值滤波和中值滤波是常见的空间域处理方法,可以用于过滤图像中的噪声。本文主要介绍数字图像均值滤波与中值滤波的基本原理,并记录在紫光同创 PGL22G FPGA 平台的布署与实现过程。 目录 1. 均值滤波与中值滤波 2. FPGA 布署与实现 2.1 功能与指标定义