• 数据可视化基础专题(十):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:ProgramDataAnaconda3Libsite-packagesmatplotlibmpl-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:ProgramDataAnaconda3Libsite-packagesmatplotlibmpl-datastylelib,里面的部分文件如下所示:

     

    每一个文件名对应于一种预设风格。

    我们可以打开一个文件,里面预设的风格属性也是通过“  键-值  ”对的形式表示的。

    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.line8
              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

  • 相关阅读:
    Docker化高可用redis集群
    机器学习理论研究方法探讨
    (转载)iOS系统Crash文件分析方法
    ios 学习总结之动画(转)
    (转)iOS sqlite :truncate/delete/drop区分
    (转载)自定义 setDateFormat 显示格式
    (转载)IOS中UIScrollView的属性和委托方法
    vue 实现分页加载数据
    深入理解JQuery插件开发
    博客迁移到GitCafe
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/12731710.html
Copyright © 2020-2023  润新知