'interpolate=True' 不适用于 fill_ Between 函数

问题描述 投票:0回答:1

我是初学者。我想使用以下代码用 Matplotlib 绘制区间分析图:

import numpy as np
import matplotlib.pyplot as plt

data = np.loadtxt('/content/sample_data/my_data', skiprows=1)
t, v, c_min, c_max = data[:, 0], data[:, 1], data[:, 2], data[:, 3]

fig, ax = plt.subplots(figsize=(10, 6))
ax.fill_between(v, c_min, c_max, color='skyblue', alpha=0.5, interpolate=True)
c_avg = (c_min + c_max) / 2
ax.plot(v, c_avg, color='blue')

ax.grid(True, linestyle='--', alpha=0.7)
plt.show()

我得到一个图表,其中间隔在交叉点(在中心)被切断。 图表 我使用 interpolate=True,但没有帮助。使用另一个函数也没有帮助(fill() 方法)。

请帮助我改进我的图表

图表数据可以这样生成:

import numpy as np

t = np.linspace(0, 2 * np.pi, 500)
v = np.sin(t)
c_avg = np.sin(t) * np.cos(t)
c_min = c_avg - 0.1
c_max = c_avg + 0.1

data = np.column_stack((t, v, c_min, c_max))
np.savetxt('/content/sample_data/my_data', data, header='t v c_min c_max', comments='', fmt='%.6f')
python matplotlib
1个回答
0
投票

只是改善你的图表

运行脚本

t = np.linspace(-np.pi/2, np.pi/2, 500)
v = -np.sin(t)

并与

t = np.linspace(-np.pi/2, np.pi/2, 500)
v = -np.sin(t)

并合并两个图

© www.soinside.com 2019 - 2024. All rights reserved.