繁体   English   中英

Python中matplotlib与seaborn之间的不一致情节

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM