我有 x 和 y 数据作为列表。对于每一个,我都有两个数据集,分别代表我想要绘制的误差带的下端和上端。 我正在使用 plt.fill_ Between 和 plt.fill_ Betweenx 来绘制误差带。 我的问题是,它不是组合误差带,并且重叠的误差带在图中看起来很奇怪。
如何绘制组合误差带,将 x 和 y 误差(以及两者的组合)视为一个带?
请在下面找到由 ChatGPT 生成的示例代码来重现我的问题。 非常感谢任何帮助,谢谢!
import numpy as np
import matplotlib.pyplot as plt
# Generate x data from -30 to 30 in steps of 1 as a list
x = list(range(-30, 31))
# Generate random y data between 1 and 10
np.random.seed(0) # For reproducibility
y = np.random.uniform(1, 10, len(x)).tolist()
# Create x_lower_band and x_upper_band
x_lower_band = [xi - 1 for xi in x]
x_upper_band = [xi + 1 for xi in x]
# Create y_lower_band and y_upper_band
y_lower_band = [yi * 0.98 for yi in y]
y_upper_band = [yi * 1.02 for yi in y]
# Create a plot
plt.figure(figsize=(10, 6))
# Plot the original y data
plt.plot(x, y, label='Random Data', color='blue')
# Plot the vertical error band (y-axis uncertainty) using fill_between
plt.fill_between(x, y_lower_band, y_upper_band, color='lightblue', alpha=0.5, label='Y Uncertainty Band')
# Plot the horizontal error band (x-axis uncertainty) using fill_betweenx
plt.fill_betweenx(y, x_lower_band, x_upper_band, color='lightcoral', alpha=0.5, label='X Uncertainty Band')
# Add labels and title
plt.xlabel('x')
plt.ylabel('y')
plt.title('Random Data with X and Y Uncertainty Bands')
plt.grid(True)
plt.legend()
plt.show()