数据可视化基础专题(十):Matplotlib 基础(二) 自定义配置文件和绘图风格(rcParams和style)
https://matplotlib.org/api/rcsetup_api.html#module-matplotlib.rcsetup
一、什么是rcParams?
我们在使用matplotliblib画图的时候经常会遇见中文或者是负号无法显示的情况,我们会添加下面两句话:
from matplotlib.pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus']=False
我们都只知道这么做,很少去想一下这到底是为什么?
实际上,pylot使用rc配置文件来自定义图形的各种默认属性,称之为rc配置或rc参数。通过rc参数可以修改默认的属性,包括窗体大小、每英寸的点数、线条宽度、颜色、样式、坐标轴、坐标和网络属性、文本、字体等。
在matplotlib模块载入的时候会调用rc_params,并把得到的配置字典保存到rcParams变量中:
1、配置文件在哪里?
既然是配置文件,它也是一个文件,这个文件存在于matplotlib的安装文件夹之下,比如我的在以下文件夹:
D:\ProgramData\Anaconda3\Lib\site-packages\matplotlib\mpl-data 文件名称是 matplotlibrc 这是windows系统的,Unix和Linux会不一样。
我们可以通过实用文本文件打开这个文件进行查看,发现,里面的内容都是“ 键-值 ”的形式,这也就是为什么我们可以通过
mpl.rcParams['font.sans-serif'] = ['SimHei'] 这种形式加以配置了。
2、如何查看默认配置信息——可以通过matplotlib的相关属性以及方法家已操作
(1)查看默认配置的方法
方法一:直接打开matplotlibrc文件
方式二:print(matplotlib.rc_params())
print(matplotlib.rcParamsDefault)
print(matplotlib.rcParams) #这三者是等价的
(2)设置相关的配置
# 修改方式一
mpl.rcParams['lines.linewidth'] = 2
mpl.rcParams['lines.color'] = 'r'
# 修改方式二
mpl.rc('lines', linewidth=4, color='g')
# 恢复默认参数
mpl.rcdefaults()
#从已有的文件更新
mpl.cr_file()
3、示例
import matplotlib
import matplotlib.pyplot as plt
import numpy as np x=np.linspace(0,2*np.pi)
y=np.sin(x) matplotlib.rcParams['lines.color']='blue' #更改划线颜色的默认设置 plt.plot(x,y,label='sin',linewidth=5)
plt.legend()
plt.show()
运行结果为:

二、什么是style
使用matplotlib画图的时候,除了我们可以针对每一个样式自己定义以外,我们还可以使用系统定义好的样式快速配置。
style是pyplot的一个子模块,方便进行风格转换,它里面定义了很多预设风格。本质上来说,每一个预设的风格style都是一个style文件,它是以 .mplstyle 为后缀的文件。我们依然可以查看,比如我的电脑在一下文件夹下,有很多的 .mplstyle文件:
D:\ProgramData\Anaconda3\Lib\site-packages\matplotlib\mpl-data\stylelib,里面的部分文件如下所示:

每一个文件名对应于一种预设风格。
我们可以打开一个文件,里面预设的风格属性也是通过“ 键-值 ”对的形式表示的。
1、预设风格的查看
方式一:直接查看相应的文件夹即可
方式二:print(plt.style.available) #会打印出所有的预设风格的名称
2、预设风格的使用——就添加一句话即可
x=np.linspace(0,2*np.pi)
y=np.sin(x)
plt.style.use('ggplot') ##使用 ggplot 的绘图风格
plt.plot(x,y,label='sin',linewidth=5)
plt.legend()
plt.show()
3、自定义画图风格style
比如我在上面所述的文件夹下自定义一个 myownstyle.mplstyle 文件,里面的内容如下所示:
lines.color: green
lines.linewidth:8
patch.edgecolor: red
text.color: white
axes.facecolor: yellow
axes.edgecolor:black
然后调用如下:
import matplotlib
import matplotlib.pyplot as plt
import numpy as np x=np.linspace(0,2*np.pi)
y=np.sin(x) f=plt.figure()
plt.style.use('myownstyle') ##使用自定义的样式文件
plt.plot(x,y,label='sin',linewidth=5)
plt.legend() plt.show()
运行结果为:

4、补充
除此之外,我们还可以使用with代码块。在代码块内部画的图是制定的风格,而在代码块外部画的图却不用这种风格,入戏所示:
x=np.linspace(0,2*np.pi)
y=np.sin(x) f=plt.figure()
with plt.style.context('myownstyle'): #将use换成context
pass
plt.plot(x,y,label='sin')
plt.legend() plt.show()
运行结果为:

由此可见,因为图是在with代码块之外画的,所以并没有使用到我的样式 myownstyle。
————————————————
版权声明:本文为CSDN博主「LoveMIss-Y」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_27825451/java/article/details/81630839
数据可视化基础专题(十):Matplotlib 基础(二) 自定义配置文件和绘图风格(rcParams和style)的更多相关文章
- 数据可视化利器pyechart和matplotlib比较
python中用作数据可视化的工具有多种,其中matplotlib最为基础.故在工具选择上,图形美观之外,操作方便即上乘. 本文着重说明常见图表用基础版matplotlib和改良版pyecharts作 ...
- 数据可视化:绘图库-Matplotlib
为什么要绘图? 一个图表数据的直观分析,下面先看一组北京和上海上午十一点到十二点的气温变化数据: 数据: 这里我用一段代码生成北京和上海的一个小时内每分钟的温度如下: import random co ...
- 数据可视化(一)-Matplotlib简易入门
本节的内容来源:https://www.dataquest.io/mission/10/plotting-basics 本节的数据来源:https://archive.ics.uci.edu/ml/d ...
- 数据可视化实例(十二): 发散型条形图 (matplotlib,pandas)
https://datawhalechina.github.io/pms50/#/chapter10/chapter10 如果您想根据单个指标查看项目的变化情况,并可视化此差异的顺序和数量,那么散型条 ...
- 数据可视化实例(十四):带标记的发散型棒棒糖图 (matplotlib,pandas)
偏差 (Deviation) 带标记的发散型棒棒糖图 (Diverging Lollipop Chart with Markers) 带标记的棒棒糖图通过强调您想要引起注意的任何重要数据点并在图表中适 ...
- [原创.数据可视化系列之十二]使用 nodejs通过async await建立同步数据抓取
做数据分析和可视化工作,最重要的一点就是数据抓取工作,之前使用Java和python都做过简单的数据抓取,感觉用的很不顺手. 后来用nodejs发现非常不错,通过js就可以进行数据抓取工作,类似jqu ...
- 数据可视化实例(十六):有序条形图(matplotlib,pandas)
排序 (Ranking) 棒棒糖图 (Lollipop Chart) 棒棒糖图表以一种视觉上令人愉悦的方式提供与有序条形图类似的目的. https://datawhalechina.github.io ...
- 数据可视化实例(十五):有序条形图(matplotlib,pandas)
偏差 (Deviation) 有序条形图 (Ordered Bar Chart) 有序条形图有效地传达了项目的排名顺序. 但是,在图表上方添加度量标准的值,用户可以从图表本身获取精确信息. https ...
- 数据可视化实例(十四):面积图 (matplotlib,pandas)
偏差 (Deviation) 面积图 (Area Chart) 通过对轴和线之间的区域进行着色,面积图不仅强调峰和谷,而且还强调高点和低点的持续时间. 高点持续时间越长,线下面积越大. https:/ ...
随机推荐
- Bash知识点记录
变量的设置规则 1. 等号两边不能直接接空格符. 2. 右侧的变量内容若有空格符,可使用双引号或单引号将变量内容括起来,其中, 双引号内的特殊字符如 $ 等,可以保有原本的特性.如下所示: ...
- 如何控制excel单元格录入相同内容的次数?
我们知道如果要用Excel制作让人规范填写的模板,数据有效性,Excel2013版本及以上叫数据验证是必学的技能,正好这个案例可以讲讲数据有效性的一种“高级”设置方法. 加入我们需要实现下面的要求,价 ...
- mysql常用基础指令大全
mysql指令 启动 net start mysql 退出mysql quit 登录 mysql -uroot -p 逻辑非 not ! 逻辑与 and && 或者 or || 逻辑异 ...
- Spring Boot 把 Maven 干掉了,拥抱 Gradle!
在国外某社交网站上有一个关于迁移 Spring Boot 迁移 Maven 至 Gradle 的帖子: 该贴子上也有很多人质疑:Maven 用的好好的,为什么要迁移至 Gradle? 虽然该贴子只是说 ...
- 【01JMeter基础】测试计划
测试计划 整个脚本的集合根目录,所有线程组集合的承载,可以添加线程组.测试片段.非测试元件.配置元件.监听器.定时器.前置/后置处理起器.断言等 一.用户自定义变量 可以使用在所有的线程组中,通过${ ...
- 13.实战交付一套dubbo微服务到k8s集群(6)之交付dubbo服务的消费者集群到K8S
构建dubbo-demo-consumer,可以使用和dubbo-demo-service的流水线来构建 1.登录jenkins构建dubbo-demo-consumer 2.填写构建dubbo-d ...
- 国内透明代理IP
- Java容器:HashMap连环炮
本文来源于:https://mp.weixin.qq.com/s/oRx-8XXbgage9Hf97WrDQQ, 公众号:安琪拉的博客 前言 HashMap应该算是Java后端工程师面试的必问题,因为 ...
- java 加密与解密艺术二
首先需要明确的是RSA的密钥对不能手动指定,需要通过代码系统生成 接下来我们来介绍下生成密钥对 package com.weiyuan.test; import java.security.KeyPa ...
- SSH网上商城二
1.实现的功能如下 当用户登陆成功之后,在首页显示所有的一级分类 显示热门商品 显示最新商品 当用户点击某个一级分类的菜单选项的时候,显示当前一级分类菜单项下所有的二级分类,并且按照分页的形式显示该二 ...