Matplotlib绘制两条水平曲线之间的填充多边形
参考:Make filled polygons between two horizontal curves in Python using Matplotlib
Matplotlib是Python中强大的数据可视化库,它提供了丰富的绘图功能。本文将详细介绍如何使用Matplotlib在两条水平曲线之间创建填充多边形。这种技术在数据分析和科学可视化中非常有用,可以用来展示数据范围、置信区间或者比较不同数据集之间的差异。
1. 基本概念
在开始绘制填充多边形之前,我们需要了解一些基本概念:
- 水平曲线:指在二维平面上沿x轴方向变化的曲线。
- 填充多边形:指在两条曲线之间的区域用颜色或图案填充。
- Matplotlib的fill_between()函数:这是实现填充效果的核心函数。
让我们从一个简单的例子开始:
Output:
在这个例子中,我们创建了两条曲线(正弦和余弦),然后使用fill_between()
函数在它们之间填充颜色。alpha
参数控制填充的透明度。
2. 自定义填充样式
Matplotlib提供了多种方式来自定义填充多边形的样式:
2.1 颜色选择
你可以通过color
参数来指定填充颜色:
Output:
这个例子使用了淡蓝色(skyblue)来填充两条抛物线之间的区域。
2.2 渐变填充
你还可以创建渐变填充效果:
Output:
这个例子通过多次调用fill_between()
并逐渐增加alpha
值来创建渐变效果。
3. 条件填充
Matplotlib允许你根据条件来选择性地填充区域:
Output:
在这个例子中,我们根据y1
和y2
的相对大小来选择填充颜色。
4. 多重填充
你可以在同一个图表中创建多个填充区域:
Output:
这个例子展示了如何在三条曲线之间创建两个不同的填充区域。
5. 填充到基线
有时你可能只想填充曲线和某个固定值(基线)之间的区域:
Output:
这个例子展示了如何填充正弦曲线和y=0基线之间的区域,并根据曲线是否在基线之上来使用不同的颜色。
6. 使用图案填充
除了纯色填充,Matplotlib还支持使用图案进行填充:
Output:
这个例子使用了斜线图案来填充正弦和余弦曲线之间的区域。
7. 填充不连续数据
有时你可能需要处理不连续的数据:
Output:
这个例子展示了如何处理包含NaN值的数据,where=~np.isnan(y1)
确保只在非NaN值之间进行填充。
8. 3D填充
Matplotlib也支持在3D图表中创建填充多边形:
这个例子展示了如何在3D空间中创建填充多边形。
9. 动态填充
你可以创建动态变化的填充多边形:
Output:
这个例子创建了一个动画,展示了随时间变化的填充多边形。
10. 误差范围可视化
填充多边形常用于可视化数据的误差范围:
Output:
这个例子展示了如何使用填充多边形来可视化数据的误差范围。
11. 堆叠面积图
填充多边形也可以用来创建堆叠面积图:
Output:
这个例子展示了如何创建一个简单的堆叠面积图。
12. 填充到特定阈值
有时你可能想填充曲线超过某个阈值的部分:
Output:
这个例子展示了如何填充曲线超过特定阈值的部分。
13. 使用颜色映射
你可以使用颜色映射来创建更复杂的填充效果:
这个例子使用了’viridis’颜色映射来填充两条曲线之间的区域。
14. 填充极坐标图
Matplotlib也支持在极坐标系中创建填充多边形:
“`python
import matplotlib.pyplot as plt
import numpy as np
theta = np.linspace(0, 2*np.pi, 100)
r1 = 0.5 + np.cos(theta)
r2 = 1 + np.sin(theta)
fig, ax = plt.subplots(subplot_kw=dict(projection='polar'), figsize=(10, 6))
ax.fill_between(theta, r1, r2, alpha=0.5, label='how2matplotlib.com')
ax.set_title('Filled Polygon in Polar Coordinates')
plt.legend()
plt.show()
<pre><code class="line-numbers">这个例子展示了如何在极坐标系中创建填充多边形。
## 15. 多子图中的填充多边形
你可以在一个图形中创建多个子图,每个子图都包含填充多边形:
“`python
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(15, 6))
ax1.fill_between(x, y1, y2, alpha=0.5, label=’Sin vs Cos’)
ax1.set_title(‘Subplot 1′)
ax1.legend()
ax2.fill_between(x, y1, 0, where=(y1 > 0), alpha=0.5, label=’Positive Sin’)
ax2.fill_between(x, y1, 0, where=(y1 <= 0), alpha=0.5, label=’Negative Sin’)
ax2.set_title(‘Subplot 2’)
ax2.legend()
plt.suptitle(‘Multiple Subplots with Filled Polygons – how2matplotlib.com’)
plt.tight_layout()
plt.show()
这个例子展示了如何在多个子图中创建不同的填充多边形。
16. 填充带有标记的曲线
你可以结合使用线条、标记和填充多边形:
这个例子展示了如何在填充多边形的基础上添加带有标记的线条。
17. 使用步进填充
你可以创建阶梯状的填充效果:
这个例子展示了如何创建阶梯状的填充多边形。
18. 填充到移动平均线
你可以使用填充多边形来可视化数据与其移动平均线之间的差异:
这个例子展示了如何填充原始数据和其移动平均线之间的区域。
19. 使用插值填充
当数据点稀疏时,你可以使用插值来创建平滑的填充效果:
这个例子展示了如何使用插值来创建平滑的填充效果,即使原始数据点很稀疏。
20. 使用渐变色填充
最后,让我们创建一个使用渐变色的填充多边形:
这个例子创建了一个从蓝色到红色的渐变填充效果,颜色变化基于两条曲线之间的距离。
总结
通过以上20个示例,我们详细探讨了如何使用Matplotlib在Python中创建两条水平曲线之间的填充多边形。这些技术涵盖了从基本的填充到高级的动态和渐变填充效果。填充多边形是数据可视化中一个强大的工具,可以用来展示数据范围、比较不同数据集、显示误差范围等。通过调整颜色、透明度、填充条件等参数,你可以创建出丰富多样的视觉效果,使你的数据展示更加生动和有说服力。
记住,在实际应用中,选择合适的填充方式和样式取决于你要传达的信息和目标受众。适当的使用填充多边形可以大大提高数据可视化的效果,使复杂的数据关系更容易理解和解释。
无论你是在进行科学研究、数据分析还是创建报告,掌握这些技术都将使你的Matplotlib图表更加专业和富有洞察力。继续探索和实践,你会发现更多创造性的方式来使用填充多边形,以最佳方式展示你的数据。