[英]inconsistent plot between matplotlib and seaborn in Python
我正在尝试使用plt.errorbar
将错误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轴上的刻度。 您可以通过查看输出[-0.5, 4.5]
ax.get_xlim()
[-0.5, 4.5]
ax.get_xlim()
来检查。 因此,当您向plt.plot
提供实际x值时,它们似乎处于错误的位置。
我不会说这是一个错误,因为seaborn认为输入pointplot
是范畴(这里的文档获取更多信息)
你可以通过模仿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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.