我试图在Seaborn中将使用plt.errorbar的错误栏添加到pointplot中:

import matplotlib
import matplotlib.pylab as plt
import seaborn as sns
import pandas
sns.set_style("white")

data = pandas.DataFrame({"x": [0.158, 0.209, 0.31, 0.4, 0.519],
                        "y": [0.13, 0.109, 0.129, 0.250, 1.10],
                        "s": [0.01]*5})

plt.figure()
sns.pointplot(x="x", y="y", data=data)
plt.errorbar(data["x"], data["y"], yerr=data["s"])
plt.show()


但是,即使绘制相同的数据,这两个图看起来也完全不同。是什么解释了这一点以及如何将误差线添加到点图?

最佳答案

似乎sns.pointplot只是使用[0...n-1]数组作为x值,然后使用您提供的x值来标记x轴上的刻度。您可以查看输出ax.get_xlim()[-0.5, 4.5]进行检查。
因此,当您将实际的x值提供给plt.plot时,它们似乎位于错误的位置。

我不会说这是一个错误,因为seaborn认为pointplot的输入是分类的(有关更多信息,这是documentation

您可以通过模仿seaborn的行为来解决此简单示例:

import matplotlib
import matplotlib.pylab as plt
import seaborn as sns
import pandas
import numpy as np
sns.set_style("white")

data = pandas.DataFrame({"x": [0.158, 0.209, 0.31, 0.4, 0.519],
                        "y": [0.13, 0.109, 0.129, 0.250, 1.10],
                        "s": [0.05]*5})

plt.figure()
sns.pointplot(x="x", y="y", data=data)
plt.errorbar(np.arange(5), data["y"], yerr=data["s"], color='r')
plt.show()


python - 在Python中matplotlib和seaborn之间的情节不一致-LMLPHP

关于python - 在Python中matplotlib和seaborn之间的情节不一致,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33884910/

10-14 17:36