数据可视化基础专题(十):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:/ ...
随机推荐
- CSS中的百分比(%)如何使用???
除了height以外垂直方向上的margin-top(bottom)或者padding-top(bottom)的百分比取值都是相对于父元素的宽度 在默认的content-box盒模型下元素的width ...
- node-sass问题
cnpm install node-sass@latest 或者 所以用npm install -g cnpm --registry=https://registry.npm.taobao.org , ...
- 使用vscode 开发go项目的最新姿势. go版本1.14.2
使用了go 1.14.2. 版本, 再也不用建src, pkg, bin 目录了, 以及再也不用强制配置GOPATH了 前提条件: 必须是 go mod 项目. 在工程目录下, 执行这样的命令生成 ...
- Laya 吐槽日志.
新换了一个公司,公司有两个产品都是用的laya, 一个as写的2D游戏, 一个ts写的3D游戏 as写小游戏,各种不舒服啊, 一堆 __JS这样的代码, 体验极差. laya IDE 按钮只能做 ...
- Mac OS 生成 icon 和 ico 文件
[本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究.若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!] 1. 生成 IC ...
- 阿里巴巴--mysql中Mysql模糊查询like效率,以及更高效的写法
在使用msyql进行模糊查询的时候,很自然的会用到like语句,通常情况下,在数据量小的时候,不容易看出查询的效率,但在数据量达到百万级,千万级的时候,查询的效率就很容易显现出来.这个时候查询的效率就 ...
- 阿里巴巴开源canal 工具数据同步异常CanalParseException:parse row data failed,column size is not match for table......
一.异常现象截图 二.解决方式: 1.背景 早期的canal版本(<=1.0.24),在处理表结构的DDL变更时采用了一种简单的策略,在内存里维护了一个当前数据库内表结构的镜像(通过desc ...
- TCP协议粘包问题详解
TCP协议粘包问题详解 前言 在本章节中,我们将探讨TCP协议基于流式传输的最大一个问题,即粘包问题.本章主要介绍TCP粘包的原理与其三种解决粘包的方案.并且还会介绍为什么UDP协议不会产生粘包. 基 ...
- Elasticsearch从入门到放弃:分词器初印象
Elasticsearch 系列回来了,先给因为这个系列关注我的同学说声抱歉,拖了这么久才回来,这个系列虽然叫「Elasticsearch 从入门到放弃」,但只有三篇就放弃还是有点过分的,所以还是回来 ...
- Python之浅谈生成器
目录 三元表达式 列表推导式 字典生成式 生成器 生成器表达式 匿名函数 三元表达式 a=0 b=6 print (a)if a>b else print(b) 三元表达式只能写if的双分支结构 ...