我是初学者。我想使用以下代码用 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')
只是改善你的图表
运行脚本
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)
并合并两个图