gpt4 book ai didi

python - 绘图平滑 matplotlib 和 seaborn

转载 作者:行者123 更新时间:2023-12-01 21:37:18 25 4
gpt4 key购买 nike

我正在尝试以一种很好的方式显示我的数据,例如在 seaborn 文档中看到的那样:

Text

我不太确定如何进行。我设法得到了点的值和它们各自的标准差,但它看起来很分散,而我只想显示一个趋势:

Text

我调查了here , 和 there尝试应用建议的解决方案,但我无法使其发挥作用。

这是我玩的东西:

Final_array =         Mean       Std
0 0.739269 0.157892
1 0.807382 0.160464
2 0.800024 0.137239
3 0.825854 0.132472
4 0.864854 0.070544
.. ... ...
95 0.797202 0.101961
96 0.747578 0.143394
97 0.751472 0.158651
98 0.587009 0.198987
99 0.728447 0.104601

sns.set(style="darkgrid", palette="muted", color_codes=True)
fig, ax = plt.subplots(figsize=(7,5))
y_pos = np.arange(Final_array.shape[0])
ax.errorbar(y_pos, Final_array[:,0], yerr=Final_array[:,1], elinewidth=0.5)
plt.show()

有人有想法吗?我是使用情节的初学者。能平滑吗?并获得像 seaborn 图像中那样漂亮的叠加层而不是错误栏?

这些问题可能很愚蠢。

亲切的问候,

最佳答案

您可以使用fillbetween 来平滑上下曲线。选择更高的 sigma 会更平滑。

下面是一些示例代码:

import matplotlib.pyplot as plt
import numpy as np
from scipy.ndimage.filters import gaussian_filter1d

x = np.linspace(0, 100, 100)
y = 0.95 - ((50 - x) / 200) ** 2
err = (1 - y) / 2
y += np.random.normal(0, err / 10, y.size)

upper = gaussian_filter1d(y + err, sigma=3)
lower = gaussian_filter1d(y - err, sigma=3)

fig, ax = plt.subplots(ncols=2)

ax[0].errorbar(x, y, err, color='dodgerblue')

ax[1].plot(x, y, color='dodgerblue')
ax[1].fill_between(x, upper, lower, color='crimson', alpha=0.2)

plt.show()

example plot

关于python - 绘图平滑 matplotlib 和 seaborn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61799259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com