我用 FacetGrid/lmplot 制作了一些回归图,并希望将回归系数、p 值等添加到每个子图中。然而,注释出现在奇怪的地方(图片),我不完全理解如何使用 lmplot 返回的轴对象,所以它只是反复试验并没有导致解决方案。阅读此https://matplotlib.org/stable/api/axes_api.html并没有澄清事情。
如果有人可以 1) 向我指出如何访问/操作/循环一般的子图(通过轴对象?)或 2) 如何修复我的代码以将注释放在正确的位置,我将不胜感激。
绘图代码:
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
import matplotlib as mpl
from scipy.stats import pearsonr
T = pd.read_csv('T.csv',sep=',')
g = sns.lmplot(data=T, y='Score', x='Value', col='MPM', row='Test', y_partial='Age',
sharex=False, sharey=False)
r, p = stats.pearsonr(T.Value, T.Score)
for ax in g.axes.flat:
ax.text(0, 0, "p={}, R={}".format(p,r), horizontalalignment='left',
verticalalignment='bottom',size='medium', color='black', weight='semibold')
当我使用这个时,情节是一样的:
g = sns.FacetGrid(data=T, col='MPM', sharex=False, sharey=False)
g.map_dataframe(sns.regplot, data=T_age, y='Score', x='Value', y_partial='Age')
我尝试通过在 ax.text(x, y,...) 中输入 > 0 的坐标来移动注释,但我收到错误消息“99693x1170 像素的图像尺寸太大。它必须小于 2^16 in每个方向。”