Python 绘制 xerr 和 yerr 组合的误差带

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

我有 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()
python plot
1个回答
0
投票

目前尚不清楚您到底想要实现什么目标。也许您可以包含预期结果的草图。

如果您的数据点同时存在

x
y
错误,那么您可以只使用
plt.errorbar
。例如

xerr = np.abs(np.vstack([x_lower_band, x_upper_band]) - x)
yerr = np.abs(np.vstack([y_lower_band, y_upper_band]) - y)
plt.errorbar(x, y, yerr, xerr, label='Random Data', color='blue',
             linestyle='--', ecolor='black')

enter image description here

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