Matplotlib fill_between方法

Matplotlib fill_between方法

参考:fill_between matplotlib

Matplotlib 是一个强大的 Python 可视化库,可以用于创建各种类型的图表和图形。其中,fill_between 方法是用于填充两条曲线之间的区域,使图表更加直观和易于理解。本文将详细介绍 fill_between 方法的用法,并提供多个示例代码来演示不同情况下的应用。

1. 基本用法

fill_between 方法最常用的用法是填充一条曲线和 x 轴(或 y 轴)之间的区域。以下是一个简单的示例代码:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0, 10, 0.1)
y = np.sin(x)

plt.plot(x, y)
plt.fill_between(x, y, color='skyblue', alpha=0.5)
plt.show()

Output:

Matplotlib  fill_between方法

在这个示例中,我们先创建了一个包含正弦函数值的数组,并将其画在图表上。然后使用 fill_between 方法填充了曲线和 x 轴之间的区域,填充颜色为天蓝色,透明度为 0.5。

2. 填充两条曲线之间的区域

除了填充曲线和坐标轴之间的区域外,fill_between 方法还可以填充两条曲线之间的区域。以下是一个示例代码:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0, 10, 0.1)
y1 = np.sin(x)
y2 = np.cos(x)

plt.plot(x, y1, color='r', label='sin(x)')
plt.plot(x, y2, color='b', label='cos(x)')
plt.fill_between(x, y1, y2, color='gray', alpha=0.5)
plt.legend()
plt.show()

Output:

Matplotlib  fill_between方法

在这个示例中,我们先分别创建了正弦函数和余弦函数的数组,并将它们画在同一张图上。然后使用 fill_between 方法填充了这两条曲线之间的区域,填充颜色为灰色,透明度为 0.5。

3. 填充特定区域

有时候我们并不需要填充整个曲线之间的区域,而是只需要填充曲线在某个特定区域内的部分。下面是一个示例代码:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0, 10, 0.1)
y = np.sin(x)

plt.plot(x, y, color='g')
plt.fill_between(x, y, where=(y > 0), color='yellow', alpha=0.3)
plt.show()

Output:

Matplotlib  fill_between方法

在这个示例中,我们先创建了一个正弦函数的数组,并画在图表上。然后使用 fill_between 方法填充了曲线在 y > 0 区域内的部分,填充颜色为黄色,透明度为 0.3。

4. 垂直填充

除了水平填充外,fill_between 方法还可以进行垂直填充。以下是一个示例代码:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0, 10, 0.1)
y = np.sin(x)

plt.plot(x, y, color='b')
plt.fill_betweenx(y, x, where=(x > 5), color='pink', alpha=0.4)
plt.show()

Output:

Matplotlib  fill_between方法

在这个示例中,我们同样创建了一个正弦函数的数组,并画在图表上。然后使用 fill_betweenx 方法进行垂直填充,在 x > 5 区域内的部分填充颜色为粉红色,透明度为 0.4。

5. 铺满整个区域

有时候我们需要填充整个图表区域,可以使用 fill_between 方法的参数 ymin 和 ymax 来实现。以下是一个示例代码:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0, 10, 0.1)
y = np.sin(x)

plt.plot(x, y, color='g')
plt.fill_between(x, y, ymin=0, ymax=1, color='orange', alpha=0.4)
plt.show()

在这个示例中,我们创建了一个正弦函数的数组,并画在图表上。然后使用 fill_between 方法填充整个图表区域,在 y 轴 0 到 1 区域填充,填充颜色为橙色,透明度为 0.4。

6. 多个填充区域

fill_between 方法还支持填充多个区域,只需多次调用该方法即可。以下是一个示例代码:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0, 10, 0.1)
y = np.sin(x)

plt.plot(x, y, color='b')
plt.fill_between(x, y, where=(y > 0), color='lightblue', alpha=0.4)
plt.fill_between(x, y, where=(y < 0), color='lightcoral', alpha=0.4)
plt.show()

Output:

Matplotlib  fill_between方法

在这个示例中,我们同样创建了一个正弦函数的数组,并画在图表上。然后分别使用 fill_between 方法填充了曲线在 y > 0 和 y < 0 区域内的部分,分别填充颜色为浅蓝色和淡珊瑚色,透明度为 0.4。

7. 边界线型

fill_between 方法还可以设置填充区域的边界线型和颜色,只需指定参数 edgecolor 和 linewidth 即可。以下是一个示例代码:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0, 10, 0.1)
y = np.sin(x)

plt.plot(x, y, color='r')
plt.fill_between(x, y, color='yellow', edgecolor='black', linewidth=1)
plt.show()

Output:

Matplotlib  fill_between方法

在这个示例中,我们创建了一个正弦函数的数组,并画在图表上。然后使用 fill_between 方法填充了曲线和 x 轴之间的区域,填充颜色为黄色,边界线型为黑色实线,线宽为1。

8. 插值填充

有时候我们不希望填充的区域是直线连接的,而是插值填充。fill_between 方法也提供了该功能,只需设置参数 interpolate=True 即可。以下是一个示例代码:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0, 10, 0.1)
y = np.exp(-0.1*x)*np.sin(x)

plt.plot(x, y, color='m')
plt.fill_between(x, y, color='lightgreen', alpha=0.3, interpolate=True)
plt.show()

Output:

Matplotlib  fill_between方法

在这个示例中,我们创建了一个指数衰减正弦函数的数组,并画在图表上。然后使用 fill_between 方法插值填充了曲线和 x 轴之间的区域,填充颜色为浅绿色,透明度为 0.3。

9. 填充限制

fill_between 方法还可以设置填充的限制区域,只需指定参数 where 和 interpolate=True 即可。以下是一个示例代码:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0, 10, 0.1)
y = np.sin(x)

plt.plot(x, y, color='b')
plt.fill_between(x, y, where=((x > 3) & (x < 7)), color='lightblue', alpha=0.4, interpolate=True)
plt.show()

Output:

Matplotlib  fill_between方法

在这个示例中,我们同样创建了一个正弦函数的数组,并画在图表上。然后使用 fill_between 方法填充了曲线在 x > 3 和 x < 7 区域内的部分,填充颜色为浅蓝色,透明度为 0.4,并且进行插值填充。

10. 叠加填充

如果希望多个填充区域叠加在一起,可以多次调用 fill_between 方法,并指定 stacked=True 参数。以下是一个示例代码:

import matplotlib.pyplot as plt
import numpy as np

x = np.arange(0, 10, 0.1)
y = np.sin(x)

plt.plot(x, y, color='g')
plt.fill_between(x, y, where=(y > 0), color='lightgreen', alpha=0.5, stacked=True)
plt.fill_between(x, y, where=(y < 0), color='lightcoral', alpha=0.5, stacked=True)
plt.show()

在这个示例中,我们同样创建了一个正弦函数的数组,并画在图表上。然后分别使用 fill_between 方法填充了曲线在 y > 0 和 y < 0 区域内的部分,并且设置 stacked=True 参数,使填充区域叠加在一起。

结语

本文详细介绍了 matplotlib 中的 fill_between 方法的用法,并提供了多个示例代码来演示不同情况下的应用。通过填充曲线之间的区域,可以使图表更加直观和易于理解,同时也增加了图表的视觉吸引力。读者可以根据自己的需求和数据特点来灵活运用 fill_between 方法,为图表添加更多的信息和细节。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程