You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何反转seaborn Figure-level绘图(FacetGrid)子图的Y轴

你之前调用g.axes未成功,是因为g.axes是和FacetGrid行列布局对应的二维NumPy数组,存储了所有子图的Axes对象,无法直接调用单Axes实例的invert_yaxis()方法。

解决方案

将axes数组展平后遍历每个子图,分别调用Y轴反转方法即可,该方案会保留matplotlib自动计算的刻度范围和间距,不会出现显示异常。
修改后的完整代码如下:

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

df_test = pd.DataFrame({'a':['yes', 'no']*5, 'b':np.arange(10), 'c':np.arange(10)*2})
plt.figure()
g = sns.FacetGrid(data=df_test, row='a')
g.map_dataframe(sns.scatterplot, y='c', x='b')

# 遍历所有子图反转Y轴
for ax in g.axes.flat:
    ax.invert_yaxis()

plt.show()

补充说明

如果你的FacetGrid布局固定,也可以直接通过索引指定子图操作,比如示例中2行1列的布局可以直接写g.axes[0,0].invert_yaxis()、g.axes[1,0].invert_yaxis(),但用g.axes.flat遍历的写法兼容性更强,任意行列数的布局都可以直接复用。

内容的提问来源于stack exchange,提问作者Cider

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 23:57:05