• python 设置Pyplot的动态rc参数、绘图的填充


    目录

    1.全局参数定制

    2.rc参数设置

    例1.rc参数设置例1

     例2.rc参数设置例2

    例3.用set_xticks设置刻度

    例4.用set_xticklabels改变刻度

     3.绘图的填充

    3.1调用函数fill_between()实现曲线下面部分的填充

    3.2 部分区域填充

    3.3 两条曲线之间的区域填充例7 使用fill_between()填充曲线之间的区域

     3.4 直接使用fill进行绘图的填充


    Matplotlib配置了配色方案和默认设置,主要用来准备用于发布的图片。有两种方式可以设置参数,即全局参数定制和rc设置方法。

    查看matplotlib的rc参数:

    1. import matplotlib as plt
    2. print(plt.ra_params)

    1.全局参数定制

    Matplotlib的全局参数可以通过编辑配置文件设置

    1. import matplotlib as plt
    2. print(plt.matplotlib_fname)
    3. #显示当前用户的配置文件目录

    查找到当前用户的配置文件目录,然后用编辑器打开,修改matplotlib文件,即可修改配置参数。

    2.rc参数设置

    使用Python编程修改rc参数,rc参数及其取值如下表1~3

    表1 rc参数名称及其取值
    rc参数解释取值
    lines.linewidth线条宽度取0~10的数值,默认1.5
    lines.linestyle线条样式取“-”“--”“-.”“:”4种,默认为“-”
    lines.marker线条上点的形状可取“o”“D”等20种,默认为None
    lines,markersize点的大小取0~10的数值,默认为1

     









     

    表2 线条样式lines.linestyle的取值
    linestyle取值意义linestyle取值意义
    -实线-.点线
    --长虚线:短虚线

    表3 lines.marker参数的取值

    marker取值 意义 marker取值 意义 'o' 圆圈 '.' 点 'D' 菱形 's' 正方形 'h' 六边形1 '*' 星号 'H' 六边形2 'd' 小菱形 '-' 水平线 'v' 一角朝下的三角形 '8' 八边形 '<' 一角朝左的三角形 'p' 五边形 '>' 一角朝右的三角形 ',' 像素 '^' 一角朝上的三角形 '+' 加号 '|' 竖线 'None' 无 'x'

    X

     需要注意的是,由于默认的Pyplot字体并不支持中文符的显示,因此需要通过设置font.sans-serif参数改变绘图时的字体,使得图形可以正常显示中文。同时,由于更换字体后,会导致坐标轴中的部分字符无法显示,因此需要同时更改axes.unicode_minus参数。

    1. plt.rcParams['font.family'] = ['SimHei'] #用来显示中文标签
    2. plt.rcParams['axes.unicode_minus'] = False #用来正常显示符号

    如果需要在坐标轴上显示时间,可以利用DateFormatter提供的功能进行设置,常用代码如下:

    1. from matplotlib.dates import DateFormatter
    2. plt.gca().xaxis.set_major_formatter(DateFormatter('%y/%m/%d'))
    3. #自动旋转X轴的刻度,适应坐标轴
    4. plt.gcf().autofmt_xdate()

    除了设置线条的字体的rc参数外,还有设置文本、箱线图、坐标轴、刻度、图例、标记、图片、图像保存等rc参数。

    例1.rc参数设置例1

    1. import numpy as np
    2. import matplotlib.pyplot as plt
    3. fig,ax = plt.subplots()
    4. #配置中文显示
    5. plt.rcParams['font.family'] = ['SimHei'] #用来显示中文标签
    6. plt.rcParams['axes.unicode_minus'] = False #用来正常显示符号
    7. def f(t):
    8. return np.cos(2*np.pi*t)
    9. x1 = np.arange(0.0,4.0,0.5)
    10. x2 = np.arange(0.0,4.0,0.01)
    11. plt.figure(1)
    12. plt.subplot(2,2,1)
    13. plt.plot(x1,f(x1),'bo',x2,f(x2),'k')
    14. plt.title('子图1')
    15. plt.subplot(2,2,2)
    16. plt.plot(x2,f(x2),'r--')
    17. plt.title('子图2')
    18. plt.show()

    OUT:

     

    例2.rc参数设置例2

    1. fig = plt.figure()
    2. ax = fig.add_subplot(1,1,1)
    3. ax.plot(np.random.randn(30).cumsum(),color = 'k',linestyle = 'dashed',marker = 'o',label = 'one')
    4. ax.plot(np.random.randn(30).cumsum(),color = 'k',linestyle = 'dashed',marker = '+',label = 'two')
    5. ax.plot(np.random.randn(30).cumsum(),color = 'k',linestyle = 'dashed',marker = 'v',label = 'three')
    6. ax.legend(loc = 'best')

    OUT:

    可以用set_xticks设置X轴刻度


    例3.用set_xticks设置刻度

    1. fig = plt.figure()
    2. ax = fig.add_subplot(1,1,1)
    3. ax.plot(np.random.randn(30).cumsum(),color = 'k',linestyle = 'dashed',marker = 'o',label = 'one')
    4. ax.plot(np.random.randn(30).cumsum(),color = 'k',linestyle = 'dashed',marker = '+',label = 'two')
    5. ax.plot(np.random.randn(30).cumsum(),color = 'k',linestyle = 'dashed',marker = 'v',label = 'three')
    6. ax.set_xticks([0,5,10,15,20,25,30,35])
    7. ax.legend(loc = 'best')

    OUT:

    可以用set_xticklabels改变刻度,设置刻度的旋转角度及字体等。


    例4.用set_xticklabels改变刻度

    1. fig = plt.figure()
    2. ax = fig.add_subplot(1,1,1)
    3. ax.plot(np.random.randn(30).cumsum(),color = 'k',linestyle = 'dashed',marker = 'o',label = 'one')
    4. ax.plot(np.random.randn(30).cumsum(),color = 'k',linestyle = 'dashed',marker = '+',label = 'two')
    5. ax.plot(np.random.randn(30).cumsum(),color = 'k',linestyle = 'dashed',marker = 'v',label = 'three')
    6. ax.set_xticklabels(['x1','x2','x3','x4','x5'],rotation = 30,fontsize = 'large')
    7. ax.legend(loc = 'best')

    OUT:

     其中,rotation参数表示X坐标标签的旋转角度;fontsize为字号,可以取值为“xx-small”“x-small”“small”“medium”“large”“x-large”“xx-large”“smaller”“None”。

     3.绘图的填充


    3.1调用函数fill_between()实现曲线下面部分的填充
     

    1. x = np.linspace(0,1,500)
    2. y = np.sin(3*np.pi*x)*np.exp(-4*x)
    3. fig,ax = plt.subplots()
    4. plt.plot(x,y)
    5. plt.fill_between(x,0,y,facecolor = 'green',alpha = 0.3)

     其中,参数x表示整个X轴都覆盖;0表示覆盖的下限;y表示覆盖的上限时y这条曲线,facecolor表示覆盖区域的颜色;alpha表示覆盖区域的透明度[0,1],其值越大,表示越不透明


    3.2 部分区域填充
     

    plt.fill_between(x[15:300],0,0.4,facecolor = 'green',alpha = 0.3)


    3.3 两条曲线之间的区域填充

    1. import numpy as np
    2. import matplotlib.pyplot as plt
    3. x = np.linspace(0,1,500)
    4. y1 = np.sin(3*np.pi*x)*np.exp(-4*x)
    5. y2 = y1 + 0.2
    6. plt.plot(x,y1,'b')
    7. plt.plot(x,y2,'r')
    8. plt.fill_between(x,y1,y2,facecolor = 'green',alpha = 0.3)
    9. plt.show()

     

     
    3.4 直接使用fill进行绘图的填充

    1. import numpy as np
    2. import matplotlib.pyplot as plt
    3. x = np.linspace(0,1,500)
    4. y = np.sin(3*np.pi*x)*np.exp(-4*x)
    5. fig,ax = plt.subplots()
    6. ax.fill(x,y)
    7. plt.show()

     

  • 相关阅读:
    SQL每日一练(牛客新题库)——第7天:必会常用函数
    CSS 常用样式background背景属性
    leetcode 347.前 K 个高频元素
    【分享】“简道云“ 在集简云平台集成应用的常见问题与解决方案
    WordPress 6.1新功能 (特性和截图)
    电脑重装系统后鼠标动不了该怎么解决
    Linux 8:线程
    py2_Python 3 的六大数据类型
    嵌入式 ~ 介绍
    Linux系统调试篇——GDB调试入门
  • 原文地址:https://blog.csdn.net/weixin_52797843/article/details/125018366