Seaborn FacetGrid:使轴相交于(0,0)

时间:2018-07-02 08:25:44

标签: python matplotlib seaborn

我正在使用seaborn的FacetGrid来散布数据帧。 这是一个简化的示例:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

df = pd.DataFrame(np.random.randint(-100, 100, size=(100, 2)), columns=['x', 'y'])

fig = sns.FacetGrid(data=df)
fig.map(plt.scatter, 'x', 'y')

enter image description here

这使轴在图的左下方相交。我希望它们在(0,0)相交。在Matplotlib中,我可以使用刺的set_position()功能来做到这一点。但是我找不到如何通过Seaborn访问该功能的方法。 如何更改绘图中轴的相交位置?

1 个答案:

答案 0 :(得分:3)

潜在的问题似乎是:如何从seaborn的Axes对象获取matplotlib FacetGrid

如果g = seaborn.FacetGrid(...),则g.axesAxes的小数数组。在这里,您只有一个子图,因此数组的唯一项是要查找的轴,

ax = g.axes[0,0]

从那里开始,您可以使用已知的解决方案通过set_position设置书脊位置,例如在the spine placement demo中。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

df = pd.DataFrame(np.random.randint(-100, 100, size=(100, 2)), columns=['x', 'y'])

g = sns.FacetGrid(data=df)
g.map(plt.scatter, 'x', 'y')

ax = g.axes[0,0]
ax.spines['left'].set_position('zero')
ax.spines['bottom'].set_position('zero')

plt.show()

enter image description here