我正在使用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')
这使轴在图的左下方相交。我希望它们在(0,0)相交。在Matplotlib中,我可以使用刺的set_position()
功能来做到这一点。但是我找不到如何通过Seaborn访问该功能的方法。
如何更改绘图中轴的相交位置?
答案 0 :(得分:3)
潜在的问题似乎是:如何从seaborn的Axes
对象获取matplotlib FacetGrid
?
如果g = seaborn.FacetGrid(...)
,则g.axes
是Axes
的小数数组。在这里,您只有一个子图,因此数组的唯一项是要查找的轴,
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()