Python 第三方模块 绘图 Matplotlib模块 简介与配置

颜色信息查看:https://matplotlib.org/gallery/color/color_demo.html
一些常用图像的绘制代码:25个常用Matplotlib图的Python代码,收藏了!

一.介绍
1.功能与特性:

Matplotlib是建立在NumPy数组基础上的数据可视化程序库,用于在Python中进行静态图像绘制
对于大型数组也能提供良好的性能,与NumPy一起提供了1种有效的MatLab开源替代方案
最初被设计用于完善SciPy的生态环境,虽然起源于模仿Matlab图形命令,但可以以Pythonic和面向对象的方式使用
也可与图形工具包(如PyQt和wxPython)一起使用
具有良好的操作系统兼容性和图形显示底层接口兼容性

2.Matplotlib的三重结构:
https://www.cnblogs.com/hello-/articles/8879925.html

1.容器层:主要用于放置其他对象
(1)Canvas:位于最底层的系统层;充当画板的角色,即放置Figure的容器
  通常情况下,不需要对Canvas特别声明,但需要在其他模块如PyQt中调用Matplotlib模块绘图时,就需要先声明Canvas
(2)Figure:Canvas上的第1,也是需要用户操作的应用层的第1;充当画布的角色
  可通过plt.figure()设置属性
(3)Axes:应用层的第2;充当画布上的坐标系/绘图区的角色,包含1个图像
  注意与Axis的区别

#注意:
1.1个figure可包含多个axes,1个axes只能属于1个figure
2.1个axes可包含多个axis(坐标轴):包含n个即为n维坐标系
#########################################################
2.辅助显示层: Axes内图像以外的所有内容,主要用于使图像更容易理解
(1)facecolor:Axes外观
(2)spines:边框线
(3)axis:坐标轴,包含大小限制/刻度/刻度标签
  axis label:坐标轴名称
  tick:坐标轴刻度
  tick label:坐标轴刻度标签
(4)grid:网格线
(5)legend:图例
(6)title:标题

#注意:
1.该层可通过set_axis_off()或set_frame_on(False)等方法隐藏
#########################################################
3.图像层:Axes内通过各种函数绘制的图像
(1)plot:线形图
(2)scatter:散点图
(3)bar:柱状图
(4)histogram:直方图
(5)pie:饼图
#########################################################
4.总结:
(1)Canvas位于最底层,用户一般接触不到
(2)Figure建立在Canvas之上
(3)Axes建立在Figure之上
(4)辅助信息层/图像层都建立在Axes之上

在这里插入图片描述
3.3种绘图方式
(1)pyplot:

即通过matplotlib.pyplot调用方法.matplotlib.pyplot是对模块中内容的1个高级封装,可以看成是整个模块的调度中心.这是1个风格和MATLAB
相似的函数集合,每个函数都会对画布/图像作出相应的改变,从而让使用者可以像使用MATLAB一样简单直观地使用matplotlib.但底层定制能力不足.
这是使用最多的方式

(2)pylab:

即通过Pylab调用方法.Pylab将Matplotlib和Numpy封装到了一起,环境最接近MATLAB.但设计哲学和Matplotlib不一致,故不推荐使用

(3)面向对象:

即通过各种对象调用方法.这是最接近Matplotlib底层的方式,难度较大但定制能力最强

4.安装
(1)Windows平台:

python -m pip install -U pip setuptools
python -m pip install matplotlib

(2)Linux平台:

#Debian/Ubuntu:
sudo apt-get install python-matplotlib
#Fedora/Redhat:
sudo yum install python-matplotlib

(3)MacOS平台:

sudo python -mpip install matplotlib
#检查是否安装了matplotlib
$ python -m pip list | grep matplotlib

5.导入:

import matplotlib as mpl
#通常导入matplotlib.pyplot即可:
import matplotlib.pyplot as plt

二.属性配置(Matplotlib Resource Configurations;Matplotlibrc)
https://blog.csdn.net/qq_27825451/article/details/82732675

1.通过配置文件进行配置
配置文件参考:https://matplotlib.org/tutorials/introductory/customizing.html
属性参考:https://matplotlib.org/api/matplotlib_configuration_api.html?highlight=rc#matplotlib.rc

(1)配置文件的3个级别:

配置文件:matplotlibrc
配置文件分为不同级别:默认使用全局的默认配置,如果希望不同项目使用不同配置,需要用到局部配置文件
系统按照 当前目录-->用户级-->安装级 的顺序查找配置文件

#具体级别:
1.当前工作目录
可为代码运行的当前目录的当前项目定制配置
默认使用全局的默认配置,如果要定制配置需要自行创建

2.用户级配置文件
为用户目录下的.matplotlib\matplotlibrc文件,如C:\Users\1234\.matplotlib\matplotlibrc
可能没有,这时需要自行创建

3.安装级配置文件
简装Matplotlib时在安装路径下的配置文件,为Python的site-packages\matplotlib\mpl-data\matplotlibrc文件
如C:\Users\1234\AppData\Roaming\Python\Python37\site-packages\matplotlib\mpl-data\matplotlibrc

(2)相关命令:

matplotlib.get_configdir():返回配置文件所在的路径(不包括文件名本身)
matplotlib.getbackend():返回Matplotlib的后端;默认为TkAgg
matplotlib.get_cachedir():返回缓存所在目录
matplotlib.get_data_path():返回数据路径;即安装级配置文件所在路径
matplotlib.get_home():返回用户目录
  #该命令在接下来的版本中将被删除,使用以下命令进行替代:
    os.path.expanduser('~')
matplotlib.matplotlib_fname():查看所有配置文件的路径
#实例:
>>> matplotlib.get_configdir()
'C:\\Users\\1234\\.matplotlib'
>>> matplotlib.get_backend()
'TkAgg'
>>> matplotlib.get_cachedir()
'C:\\Users\\1234\\.matplotlib'
>>> matplotlib.get_data_path()
'C:\\Users\\1234\\AppData\\Roaming\\Python\\Python37\\site-packages\\matplotlib\\mpl-data'
>>> matplotlib.get_home()
__main__:1: MatplotlibDeprecationWarning:
The get_home function was deprecated in Matplotlib 3.2 and will be removed two minor releases later. Use os.path.expanduser('~') instead.
'C:\\Users\\1234'
>>> matplotlib.matplotlib_fname()
'C:\\Users\\1234\\AppData\\Roaming\\Python\\Python37\\site-packages\\matplotlib\\mpl-data\\matplotlibrc'

(3)配置文件的格式:

## ***************************************************************************
## * <配置对象>                                                                 *
## ***************************************************************************
[## <注释>]
# <属性1>      :<属性值>      [##<注释>]
# <属性2>      :<属性值>      [##<注释>]
   ...            ...           ...

#实例:
## ***************************************************************************
## * PATCHES                                                                 *
## ***************************************************************************
## Patches are graphical objects that fill 2D space, like polygons or circles.
## See https://matplotlib.org/api/artist_api.html#module-matplotlib.patches
## for more information on patch properties.
#patch.linewidth       : 1      ## edge width in points.
#patch.facecolor       : C0
#patch.edgecolor       : black  ## if forced, or patch is not filled
#patch.force_edgecolor : False  ## True to always use edgecolor
#patch.antialiased     : True   ## render patches in antialiased (no jaggies)

2.修改属性字典:

所有rc参数都储存在matplotlib.rcParams这个类字典的变量中
该变量对Matplotlib是全局的,且可以直接修改

mpl.rcParams["<obj>.<prop>"]=<value>
matplotlib.rcParams["<obj>.<prop>"]=<value>
  #注意:和查看时不同,此处是方括号,且为rcParams
  #参数说明:
    obj.prop:要设置的属性(某对象的某属性);str
    value:属性值

#实例:
>>> import matplotlib
>>> from matplotlib.pylab import mpl
>>> mpl.rcParams["lines.color"]="r"
>>> matplotlib.rcParams["lines.color"]="b"

3.通过函数进行动态配置
(1)查看配置:

matplotlib.rcParams.keys():查看所有rc参数及默认值

#以下4种方法是等价的:均用于查看当前rc配置
>>> import matplotlib
>>> from matplotlib.pylab import mpl
>>> mpl.rc_params()
RcParams({'_internal.classic_mode': False,
          'agg.path.chunksize': 0,
                      ...#中间部分在此省略
          'ytick.minor.width': 0.6,
          'ytick.right': False})
>>> matplotlib.rc_params()
#结果同上
>>> matplotlib.rcParamsDefault
#结果同上
>>> matplotlib.rcParams
#结果同上

(3)通过rc()进行配置:

mpl.rc("<obj>",<prop1>,<value1>[,<prop2>,<value2>...])
pyplot.rc("<obj>",<prop1>,<value1>[,<prop2>,<value2>...])
matplotlib.rc("<obj>",<prop1>,<value1>[,<prop2>,<value2>...])
  #参数说明:
    obj:要设置属性的对象;str
    prop:要设置的属性;str
      #相当于设置<obj>.<prop>=<value>
    value:属性值
      #prop和value也可写成{"<prop>":<value>},此时prop为str

#实例:
>>> import matplotlib
>>> from matplotlib.pylab import mpl
>>> from matplotlib import pyplot as plt
>>> plt.rc("lines",linewidth=2)
>>> mpl.rc("lines",linewidth=2)
>>> matplotlib.rc("lines",linewidth=2,color="g")

(4)其他相关函数:

mpl.rcdefaults():恢复默认设置
mpl.cr_file():从已有文件更新

4.配置对象及属性
(1)配置对象:

BACKENDS
LINES:线条颜色,线条风格,线条宽度,线条标记风格等
PATCHES:填充2D空间的图形对象,包括多边形和圆
HATCHES
BOXPLOT
FONT:字体类别,字体风格,字体粗细,字体大小等
TEXT:文本颜色,LaTex渲染文本等
LaTeX
AXES:坐标轴的背景颜色,坐标轴的边缘颜色,刻度线的大小,刻度标签的字体大小等
DATES
TICKS:坐标轴的主次要刻度线的大小,宽度,颜色,刻度标签大小等
GRIDS:网格颜色,网格线条风格,网格线条宽度,网格透明度
LEGEND:图例的文本大小,阴影,图例线框风格等
FIGURE:画布标题大小,画布标题粗细,画布像素(dpi), 画布背景颜色,边缘颜色等
IMAGES
CONTOUR PLOTS
ERRORBAR PLOTS
HISTOGRAM PLOTS
SCATTER PLOTS
AGG RENDERING
PATHS
SAVING FIGURES:保存画布图像的分辨率,背景颜色,边缘颜色等
INTERACTIVE KEYMAPS
ANIMATION

(2)属性:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
三.其他设置
1.后端引擎:

后端概念参考:https://www.cnblogs.com/suntp/p/6519386.html
在这里插入图片描述2.语言与字体

Matplotlib的pyplot支持Unicode,但默认使用英文,故需要自行设置:

#方法1:更灵活,不污染全局
1.将字体文件放在当前执行的代码文件中:
<font1>=matplotlib.font_manager.FontProperties(fname="<path\file>")
  #参数说明:
    fname:字体库路径及文件名
      #路径通常为C:\Windows\Fonts\
    font1:返回字体对象
2.然后利于fontproperties属性在要使用中文的位置进行设置
3.如果是系统自带的字体,直接设置fontproperties="<字体>"
#实例:
import numpy as np
from matplotlib import pyplot as plt
import matplotlib
>>> a=[-15,-10,-5,20,25,30]
>>> b=[-5,-4,-3,6,7,8]
>>> plt.xlabel('x轴',fontproperties='STLiti')#华文隶书
>>> plt.ylabel('y轴',fontproperties='Microsoft YaHei')#微软雅黑
>>> plt.title('标题',fontproperties='Microsoft JhengHei')#微软正黑
>>> plt.plot(a,b)
>>> plt.show()
#结果:见下图1
>>> zhfont1=matplotlib.font_manager.FontProperties(fname="SimHei.ttf")
>>> x=np.arange(1,11) 
>>> y=2*x+5 
>>> plt.title("测试",fontproperties=zhfont1) 
>>> plt.xlabel("x 轴",fontproperties=zhfont1)
>>> plt.ylabel("y 轴",fontproperties=zhfont1)
>>> plt.plot(x,y) 
>>> plt.show()
#结果:见下图2

在这里插入图片描述
在这里插入图片描述

#方法2:简单方便
mpl.rcParams["font.sans-serif"]=["<字体>"]
  #也可以省略[ ](为什么这里就可以加[]???)
#实例:
from matplotlib.pylab import mpl
mpl.rcParams['font.sans-serif']=['SimHei']

#方法3:不推荐,会破坏原本的安装结构,且并非所有项目都需要使用中文
1.修改matplotlibrc文件:
需要先删除要修改的属性前的"#",再进行修改
#实例:
font.family         : Microsoft YaHei
font.sans-serif     : Microsoft YaHei, DejaVu Sans, Bitstream Vera Sans, Computer Modern Sans Serif, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif
2.删除缓存:
>>> import matplotlib
>>> matplotlib.get_cachedir()
#删除结果目录中的所有文件
3.重启Python
如果有希腊字母,使用"$...$",如plt.xlabel(u'$ω$')

3.显示负号:

#方法1:
from matplotlib.pylab import mpl
mpl.rcParams['axes.unicode_minus']=False

#方法2:修改全局的matplotlibrc文件
1.修改文件
#修改为:
axes.unicode_minus  : False    ## use unicode for the minus symbol
2.删除缓存
>>> import matplotlib
>>> matplotlib.get_cachedir()
#删除结果目录中的所有文件
3.重启Python

4.字体:

在C:\Windows\Fonts中找到字体文件,发现显示的是字体名
将字体文件复制到matplotlib的ttf文件夹中,如:
C:\Users\1234\AppData\Roaming\Python\Python37\site-packages\matplotlib\mpl-data\fonts\ttf
发现本质上C:\Windows\Font中的字体文件就是.ttc/.ttf字体文件
  • Windows常见字体:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • Mac常见字体:

在这里插入图片描述

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值