这篇文章主要讲了如何修改样式,保存样式以及加载样式文件

样式: 就是定义图形、字体、线条等一切可以美化的元素的公式;说人话就是:你定义好一个公式A,A中定义线条的颜色是红色;现在画图的时候你需要美化一个线条;就直接使用这个公式;线条就变成了红色;这样说的话样式也就相当于一种画图的风格。

matplot支持两种修改样式的方式:

  • 使用样式表
  • 使用rcParams

这两种修改样式的方式有啥区别呢?

样式表的方式是通过加载样式文件,来修改matplotlib中默认的绘图风格;加载了文件后只在当前环境生效,下次要用还得重新加载。而rcParams则是直接修改matplotlib的默认配置,一劳永逸。

下面就用代码来看看具体的效果吧。

来解读一下具体代码的作用

为了方便比较,我使用了subplot函数生成两个子图,函数内部参数不懂的可以看我之前写的一篇pyplot对象的文章。 默认情况下,matplotlib中加载自定义样式时是对全局生效的,如果你只想在某个地方使用这个样式就得像我这样

with plt.style.context('fivethirtyeight'):plt.plot(data)plt.title('fivethirtyeight style')plt.grid(True)

通过比较可以发现,再使用了系统中的定义的一个样式后,线条明显变粗了

##使用系统默认的样式
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl   ##因为要修改样式所有matplotlib都得引入
from cycler import cycler
plt.figure() ##生成一块画布
data = np.random.randn(50) ##绘图数据plt.subplot(121) ##绘制系统默认的样式plt.plot(data)
plt.title("default style")
plt.grid(True)
plt.subplot(122) ##绘制系统样式
with plt.style.context('fivethirtyeight'):plt.plot(data)plt.title('fivethirtyeight style')plt.grid(True)

使用系统定义的样式

使用这个print(plt.style.available)函数可以打印中吗,matplotlib中预先定义好的一些样式。 哇哦惊讶的发现我无敌ggplot样式竟然在里面

['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']

定义你的样式文件

知道了如何使用样式文件来批量美化图片后,接下来就是定义你自己的一套审美啦。样式文件的格式采用的是键值对的形式,如下所示

axes.titlesize : 24
axes.labelsize : 20
lines.linewidth : 3
lines.markersize : 10
xtick.labelsize : 16
ytick.labelsize : 16

在定义好之后,只需要加上文件路径就可以使用,这里我还没测试不知道文件是不是必须得用mplstyle为后缀;我觉得应该不需要

>>> import matplotlib.pyplot as plt
>>> plt.style.use('./images/presentation.mplstyle')

组合多个样式文件

美化图片也可以变成和搭积木一样,比如把线条的美化存成一个line.mplstyle文件,背景的美化存成background.mplstyle文件;这样当你有多个这个的文件的时候就可以同过组合起来,构成一个独特的样式啦

with plt.style.context('dark_background','ggplot'):  ##只在局部环境生效plt.plot(np.sin(np.linspace(0, 2 * np.pi)), 'r-o')
plt.show()
with plt.style.context('dark_background','ggplot'):plt.plot(np.sin(np.linspace(0, 2 * np.pi)))
plt.show()

rcParams修改系统默认样式

这个操作时对所有环境都生效的哟,如果你觉得matplotlib的默认样式太丑了,恰巧你想修改它的样式并且想在每次画图都自动的使用你设置好的样式,那就可以考虑用它了

设置的方式也非常的简单

mpl.rcParams['lines.linewidth'] = 2
mpl.rcParams['lines.linestyle'] = '--'
plt.plot(data)

如果你想重置之前的配置的话,可以使用函数matplotlib.rcdefaults()进行重置。

关于样式文件的位置

这个东西用的不多,仅仅了解一下就可以了

如果想像使用系统中自定义样式文件那样引入样式文件而不使用路径的话plt.style.context('ggplot'),只需要把你的为文件存在这个目录下即可~/.config/matplotlib/stylelib/,文件的命名也有讲究和系统的命令类似即可。 系统rcParams中默认的样式文件,存储在~/.config/matplotlib/matplotlibrc这个文件内;喜欢折腾的可以改改这个文件。

参考

1.matplotlib样式

miniui 样式第一次加载不出来_matplotlib--修改样式相关推荐

  1. 如何解决刷新一瞬间 出现样式未加载完 或者 出现VUE代码问题

    1.出现样式未加载完出现一瞬间无样式的网页,把css等样式加载文件放在html的头部 2.出现vue代码可以 [v-cloak] {display: none;}//然后<div id=&quo ...

  2. 解决Vue刷新一瞬间出现样式未加载完或者出现Vue代码问题

    解决Vue刷新一瞬间出现样式未加载完或者出现Vue代码问题 参考文章: (1)解决Vue刷新一瞬间出现样式未加载完或者出现Vue代码问题 (2)https://www.cnblogs.com/jiah ...

  3. php样式无法加载 路径对的,网站首页 有时加载不了样式

    做的一个网站,首页有缓存 有时候打开的时候 样式的路径是这样 的 ip地址/css/index.css 首页样式乱了 这个网站一开始用ip:8080访问 绑上域名以后域名访问 但是有时候样式 还是加载 ...

  4. elementui的el-tree第一次加载无法展开和选中的问题

    问题现象 elmentui的el-tree数据加载问题,导致第一次加载选中当前节点和高亮当前节点没有生效. 解决方案 默认展开节点的解决 在el-tree上面挂上data-change <el- ...

  5. [vue] 第一次加载页面时会触发哪几个钩子?

    [vue] 第一次加载页面时会触发哪几个钩子? beforeCreate, created, beforeMount, mounted 个人简介 我是歌谣,欢迎和大家一起交流前后端知识.放弃很容易, ...

  6. php 无法加载css文件,解决ThinkPHP样式无法加载问题(CSS,JS),

    解决ThinkPHP样式无法加载问题(CSS,JS)解决了ThinkPHP风格无法加载的问题(CSS,JS),以下是thinkphp框架教程栏目,对ThinkPHP风格无法加载(CSS,JS)问题的解 ...

  7. thinkphp u不加载css,解决ThinkPHP样式无法加载问题(CSS,JS)

    下面由thinkphp框架教程栏目给大家介绍解决ThinkPHP样式无法加载问题(CSS,JS)的方法,希望对需要的朋友有所帮助! 1.项目入口文件index.php<?php define(' ...

  8. 提高网站第一次加载速度

    特别是在手机端访问,用户第一次打开网站,如果得到反馈的时间太久,用户很可能在页面完成加载之前就离开,不会再次访问.所以,网站.web App,提高首次访问的加载速度就显得特别重要了.第一次加载速度是用 ...

  9. android web canvas,HTML5 - Canvas无法在Android WebView的第一次加载时渲染

    我正在开发基于HTML5画布的游戏,该游戏在现有应用程序的WebView中运行.在第一次运行游戏时,它会在后台成功加载,所有日志都表明它已准备就绪并正在运行.但是,WebView中不显示任何内容.如果 ...

最新文章

  1. windows下apache配置虚拟主机的两个方法
  2. php控制css,div控制css样式
  3. 从合并排序算法看“分治法”
  4. JAVA(利用jsp+javabean+servlet)实现简易计算器
  5. 怎样使用Spring Boot项目的单元测试?
  6. 【LeetCode笔记】94 144 145. 二叉树的前序、中序、后序遍历的迭代与递归(Java、dfs、迭代)
  7. 设备上专用计算机管理办法,计算机设备管理办法
  8. Android NDK 如何缩减库的大小
  9. telnet测试端口
  10. 工具推荐——Snipaste
  11. 计算机考研专业课——c语言
  12. 金沙滩开发板单片机学习笔记(1)
  13. mysql data::dumper_初始化mysql数据库提示缺少Data:dumper模块解决方法
  14. 基努·里维斯继续出演《黑客帝国4》|| 程序员吐槽大会精选片段
  15. 分享一个07版的office, 有密匙的。
  16. Python Lost connection to MySQL server during query
  17. 计算机专业数学专业考研学校排名,数学专业考研院校推荐
  18. 【OpenCV】人脸检测和识别
  19. Linux 操作系统的安装
  20. 无人机小知识:Pitch Yaw Roll的经典解释

热门文章

  1. 企业IT架构转型之道 读书笔记-1.阿里巴巴集团中台战略引发的思考
  2. python之路_前端基础之jQuery入门2
  3. 工作流学习——Activiti流程实例、任务管理四步曲 (zhuan)
  4. win10安装mysql出现请键入 NET HELPMSG 3534 以获得更多的帮助。
  5. HL7数据类型分析(1)
  6. P1425 小鱼的游泳时间【入门题】
  7. javascript无限请求_JAVASCRIPT事件循环
  8. Python爬取并简单分析2024年普通高校招生专业(专业类)选考科目要求
  9. Python查找包含指定字符串的所有Office文档
  10. Python中表达式int('0x10, 36)的值是。。。