Python Matplotlib动态rc参数配置与图形填充详解
本文详细介绍Python中Matplotlib库的动态rc参数设置方法,包括全局参数定制与编程方式修改。重点讲解字体、线条样式及刻度标签的配置,并通过fill_between和fill函数演示曲线下方、局部区域及双曲线间的图形填充技巧,帮助开发者优化图表显示效果。
Matplotlib内置了配色方案与默认设置,主要用于生成符合出版标准的图像。配置参数主要有两种途径:一是通过全局参数进行定制,二是利用rc设置方法进行调整。
查看matplotlib的rc参数:
import matplotlib as plt
print(plt.ra_params)1.全局参数定制
Matplotlib的全局参数可以通过编辑配置文件进行设定。
import matplotlib as plt
print(plt.matplotlib_fname)
#显示当前用户的配置文件目录首先定位当前用户的配置文件目录,随后使用编辑器打开该目录下的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取值意义-实线-.点线--长虚线:短虚线
| 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参数。
plt.rcParams['font.family'] = ['SimHei'] #用来显示中文标签
plt.rcParams['axes.unicode_minus'] = False #用来正常显示符号若需在坐标轴上显示时间格式,可利用DateFormatter提供的功能进行配置,常用代码如下:
from matplotlib.dates import DateFormatter
plt.gca().xaxis.set_major_formatter(DateFormatter('%y/%m/%d'))
#自动旋转X轴的刻度,适应坐标轴
plt.gcf().autofmt_xdate()除了线条字体的rc参数外,还可设置文本、箱线图、坐标轴、刻度、图例、标记、图片保存等其他的rc参数。
例1.rc参数设置例1
import numpy as np
import matplotlib.pyplot as plt
fig,ax = plt.subplots()
#配置中文显示
plt.rcParams['font.family'] = ['SimHei'] #用来显示中文标签
plt.rcParams['axes.unicode_minus'] = False #用来正常显示符号
def f(t):
return np.cos(2*np.pi*t)
x1 = np.arange(0.0,4.0,0.5)
x2 = np.arange(0.0,4.0,0.01)
plt.figure(1)
plt.subplot(2,2,1)
plt.plot(x1,f(x1),'bo',x2,f(x2),'k')
plt.title('子图1')
plt.subplot(2,2,2)
plt.plot(x2,f(x2),'r--')
plt.title('子图2')
plt.show()OUT:

例2.rc参数设置例2
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.plot(np.random.randn(30).cumsum(),color = 'k',linestyle = 'dashed',marker = 'o',label = 'one')
ax.plot(np.random.randn(30).cumsum(),color = 'k',linestyle = 'dashed',marker = '+',label = 'two')
ax.plot(np.random.randn(30).cumsum(),color = 'k',linestyle = 'dashed',marker = 'v',label = 'three')
ax.legend(loc = 'best')OUT:

可以使用set_xticks方法来设置X轴的刻度位置。
例3.用set_xticks设置刻度
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.plot(np.random.randn(30).cumsum(),color = 'k',linestyle = 'dashed',marker = 'o',label = 'one')
ax.plot(np.random.randn(30).cumsum(),color = 'k',linestyle = 'dashed',marker = '+',label = 'two')
ax.plot(np.random.randn(30).cumsum(),color = 'k',linestyle = 'dashed',marker = 'v',label = 'three')
ax.set_xticks([0,5,10,15,20,25,30,35])
ax.legend(loc = 'best')OUT:

可以使用set_xticklabels方法修改刻度标签,并可设置刻度的旋转角度及字体大小等属性。
例4.用set_xticklabels改变刻度
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
ax.plot(np.random.randn(30).cumsum(),color = 'k',linestyle = 'dashed',marker = 'o',label = 'one')
ax.plot(np.random.randn(30).cumsum(),color = 'k',linestyle = 'dashed',marker = '+',label = 'two')
ax.plot(np.random.randn(30).cumsum(),color = 'k',linestyle = 'dashed',marker = 'v',label = 'three')
ax.set_xticklabels(['x1','x2','x3','x4','x5'],rotation = 30,fontsize = 'large')
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()实现曲线下面部分的填充
x = np.linspace(0,1,500)
y = np.sin(3*np.pi*x)*np.exp(-4*x)
fig,ax = plt.subplots()
plt.plot(x,y)
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 两条曲线之间的区域填充
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0,1,500)
y1 = np.sin(3*np.pi*x)*np.exp(-4*x)
y2 = y1 + 0.2
plt.plot(x,y1,'b')
plt.plot(x,y2,'r')
plt.fill_between(x,y1,y2,facecolor = 'green',alpha = 0.3)
plt.show()

3.4 直接使用fill进行绘图的填充
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0,1,500)
y = np.sin(3*np.pi*x)*np.exp(-4*x)
fig,ax = plt.subplots()
ax.fill(x,y)
plt.show()
到此这篇关于python设置Pyplot的动态rc参数、绘图的填充的文章就介绍到这了,更多相关python设置Pyplot内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









