数据可视化(matplotlib)-------图表样式美化

目录

一、图表样式概述

(一)、默认图表样式

(二)、图表样式修改

1、局部修改

2、全局修改

二、使用颜色

(一)、使用基础颜色

1、单词缩写或单词表示的颜色

2、十六进制/HTML模式表示的颜色

3、RGB模式表示的颜色

(二)、使用颜色映射表

三、选择线型

选择线条的类型

四、添加数据标记

(一)、添加折线图或散点图的数据标记

1、marker参数

(二)、格式字符串

五、设置字体

设置字体样式

六、切换主题风格

use()函数-----切换图表的主题风格

use(style)

七、填充区域

填充多边形或曲线之间的区域

1、fill()

2、fill_between()

3、fill_betweenx()


一、图表样式概述

(一)、默认图表样式

matplotlib在绘图的过程中会读取存储在本地的配置文件matplotlibrc,通过matplotlibrc文件中的缺省配置信息指定图表元素的默认样式,完成图表元素样式的初始设置。

通过rc_params()函数可以查看matplotlibrc文件中全部的配置项。

配置项按照作用对象的不同主要分为10种配置要素:

(二)、图表样式修改

图表的样式可以通过两种方式进行修改:局部修改和全局修改。

1、局部修改

局部修改的方式是指通过代码动态地修改matplotlib配置项,此方式用于程序局部定制的需求。若希望局部修改图表的样式,可以通过以下任一种方式实现

第1种---通过给绘图函数或设置图表元素函数的关键字参数传值来修改图表的样式。

第2种---通过"rcParams[配置项]"重新为配置项赋值来修改图表的样式。

第3种---通过给rc()函数的关键字参数传值来修改图表的样式。

第1种方式只能对某一图表中指定元素的样式进行修改,而第2种和第3种方式可以对整个py文件中指定元素的样式进行修改。

2、全局修改

全局修改的方式是指直接修改matplotlibrc文件的配置项,此方式用于满足程序全局定制的需求,可以将指定的图表样式进行统一修改,无需每次在具体的程序中进行单独修改。 matplotlib使用matplotlibrc文件的路径搜索顺序:

① 当前工作路径 :程序运行的目录。
② 用户配置路径 :通常位于 HOME/.matplotlib/ 目录中,可以通过环境变量 MATPLOTLIBRC 进行修改。
③ 系统配置路径 :位于 matplotlib 安装路径的 mpl-data 目录中。

matplotlib_fname()函数查看当前使用的matplotlibrc文件所在的路径。

二、使用颜色

(一)、使用基础颜色

matplotlib的基础颜色主要有3种表示方式:单词缩写或单词、十六进制或HTML模式、RGB模式。

1、单词缩写或单词表示的颜色

matplotlib中支持使用单词缩写或单词表示的8种颜色:青色、洋红色、黄色、黑色、红色、绿色、蓝色、白色。

2、十六进制/HTML模式表示的颜色

matplotlib支持使用十六进制或HTML/CSS的形式表示更多的颜色,它将这些颜色存储在colors.cnames字典中,可通过访问colors.cnames字典查看全部的颜色。

3、RGB模式表示的颜色

matplotlib支持使用RGB模式的三元组表示颜色,其中元组的第1个元素代表红色值,第2个元素代表绿色值,第3个元素代表蓝色值,且每个元素的取值范围均是[0,1]。

color = (0.3, 0.3, 0.4)

(二)、使用颜色映射表

通过 colormaps() 函数可以查看所有可用的颜色映射表。

python 复制代码
import matplotlib.pyplot as plt
plt.colormaps()

颜色映射表分类:
Sequential :表示同一颜色从低饱和度到高饱和度的单色颜色映射表。
Diverging :表示颜色从中间的明亮色过渡到两个不同颜色范围方向的颜色映射表。
Qualitative :表示可以轻易区分不同种类数据的颜色映射表。

可以通过matplotlib.cm.register_cmap()函数将自定义的颜色映射表添加到matplotlib中。

三、选择线型

选择线条的类型

图表中每个线条均具有不同的含义,一般可以通过颜色、宽度、类型来区分线条,其中类型是区分线条的常见方式之一。

matplotlib中内置了4种线条的类型:短虚线、点划线、长虚线和实线。

在使用pyplot绘制折线图、显示网格或添加参考线时,可以将线型取值传递给linestyle或ls参数,以选择其它的线条类型。

python 复制代码
plt.plot([1, 2, 3], [3, 4, 5], linestyle='--')
plt.plot([1, 2, 3], [3, 4, 5], ls='--')

四、添加数据标记

数据标记一般指代表单个数据的圆点或其它符号等,用于强数据点的位置,常见于折线图和散点图中。

(一)、添加折线图或散点图的数据标记

数据标记可以分为填充型数据标记和非填充型数据标记。

1、marker参数

在使用pyplot的plot()或scatter()函数绘制折线图或散点图时,可以将标记取值传递给marker参数,从而为折线图或散点图添加数据标记。

python 复制代码
plt.plot([1, 2, 3], [3, 4, 5], marker='*')

(二)、格式字符串

matplotlib在绘制折线图时,可以使用字符串分别为线条指定颜色、线型和数据标记这三种样式,但每次都需要分别给参数color、linestyle、marker传值进行一一设置,使得编写的代码过于繁琐。为此,matplotlib提供了由颜色、标记、线型构成的格式字符串。

格式字符串是快速设置线条基本样式的缩写形式的字符串。
'[颜色][标记][线型]'
以上格式的每个选项都是可选的,选项之间组合的顺序也是可变的。
颜色只能是字母缩写方式表示的颜色。
若格式字符串中只有颜色一个选项,可以使用十六进制、单词拼写等其它形式表示的颜色。

python 复制代码
plt.plot([1, 2, 3], [3, 4, 5], 'mo--')

五、设置字体

设置字体样式

matplotlib中文本是text模块的Text类对象,可以通过之前介绍的text()、annotate()、title()等函数进行创建。Text类中提供了一系列设置字体样式的属性,包括字体类别、字体大小、字体风格、字体角度等。

也可以作为text()、annotate()、title()函数的同名关键字参数,以便用户在创建文本的同时设置字体的样式。

六、切换主题风格

matplotlib.style模块中内置了一些图表的主题风格,通过切换不同的主题风格以满足用户的不同需求。

所有的主题风格都存储于matplotlib配置文件夹的stylelib目录中,可以通过访问available变量查看所有可用的主题风格。

python 复制代码
import matplotlib.style as ms
print(ms.available)

use()函数-----切换图表的主题风格

use(style)

以上函数的参数style表示图表的主题风格,它可以接收matplotlib中所有可用的主题风格的字符串,也可以接收"default"来恢复默认的主题风格。

七、填充区域

matplotlib中提供了多个函数用于填充多边形或区域,分别为fill()、fill_between()和fill_betweenx(),其中fill()函数用于填充多边形,fill_between()或fill_betweenx()函数分别用于填充两条水平曲线或垂直曲线之间的区域。

填充多边形或曲线之间的区域

1、fill()

fill(*args, data=None, facecolor, edgecolor, linewidth, **kwargs)

*args:表示x坐标、y坐标或颜色的序列。

acecolor:表示填充的背景颜色。

edgecolor:表示边框的颜色。

linewidth:表示边框的宽度。

2、fill_between()

fill_between(x, y1, y2=0, where=None, interpolate=False, step=None, data=None, **kwargs)

x:表示x轴坐标的序列。

y1:表示第一条曲线的y轴坐标。

y2:表示第二条曲线的y轴坐标。

where:布尔值,表示要填充区域的条件。

y1>y2说明第一条曲线位于第二条曲线上方时填充;y1<y2说明第二条曲线位于第一条曲线上方时填充

3、fill_betweenx()

fill_betweenx(y, x1, x2=0, where=None, step=None, interpolate=False, data=None,

**kwargs)

y:表示y轴坐标的序列。

x1:表示第一条曲线的x轴坐标。

x2:表示第二条曲线的x轴坐标。

where:布尔值,表示要填充区域的条件。

x1>x2说明第一条曲线位于第二条曲线右方时填充;y1<y2说明第二条曲线位于第一条曲线右方时填充。

相关推荐
不爱吃鱼的猫-几秒前
PySide6控件:QFont设置、QColor调色板、QPixmap图像处理与QCursor光标自定义
python·pyqt·个人开发·pyside6
276695829210 分钟前
拼多多 anti-token unidbg 分析
java·python·go·拼多多·pdd·pxx·anti-token
我是个菜鸡.12 分钟前
Python-八股总结
开发语言·python
风暴之零17 分钟前
使用大语言模型进行Python图表可视化
人工智能·python·语言模型·数据可视化
安然无虞24 分钟前
31天Python入门——第17天:初识面向对象
后端·爬虫·python·职场和发展
程序员小远37 分钟前
Python+requests实现接口自动化测试框架
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·接口测试
A叶子叶44 分钟前
Kong网关部署研究
python·spring cloud·微服务·gateway·kong
聪明的墨菲特i1 小时前
Python 办公技巧:PDF 自动化处理
python·pdf·自动化
Ronin-Lotus1 小时前
深度学习篇---模型参数调优
人工智能·pytorch·python·深度学习·paddlepaddle·batch·学习率
林泽毅2 小时前
SwanLab硬件监控:英伟达、昇腾、寒武纪
python·深度学习·昇腾·英伟达·swanlab·寒武纪·训练实战