【问题标题】:How to set labels on jointplot, pairplot, heatmap, catplot on python seaborn?python - 如何在python seaborn上的jointplot、pairplot、heatmap、catplot上设置标签?
【发布时间】:2020-02-18 03:59:26
【问题描述】:

我正在 python 上使用 seaborn 绘制图形,并希望标记 x 轴和 y 轴。

当我只绘制一个图形,如条形图、地毯图、直方图等时,我可以使用:

pyplot.xlabel('x') pyplot.ylabel('y')

但是对于联合图、配对图、热图和猫图等图表,结果与我的预期不同。

Jointplot 在内部绘制散点图,在外部绘制直方图。所以当我使用pyplot.xlabel('x') pyplot.ylabel('y') 时,标签会绘制在直方图的轴上。

此代码绘制了 4 个 catplot 并使用 xlabel, ylabel 仅标记底部的 catplot。

import seaborn as sns
from matplotlib import pyplot
tips = sns.load_dataset("tips")

sns.catplot(x="sex", y="total_bill", hue="smoker",row="day",
            kind="violin", data=tips, split=True)
pyplot.suptitle("tip - catplot", y=1.01)
pyplot.xlabel('x')
pyplot.ylabel('y')
pyplot.show();

如何标记整个图形的轴?还是每个图表?

谢谢

【问题讨论】:

    标签: python matplotlib seaborn


    【解决方案1】:

    您可以通过首先将catplot 的返回值分配给一个变量来获取每个坐标区对象。坐标轴是使用axes 属性获得的。然后为这些轴设置标签:

    g = sns.catplot(x="sex", y="total_bill", hue="smoker",row="day",
                kind="violin", data=tips, split=True)
    for ax, lbl in zip(g.axes.flatten(), 'abcd'):
        ax.set_xlabel(f'x axis {lbl}')
    

    【讨论】:

    • 谢谢!是否可以在 pandas.pivot 表和 pairplot 上使用?
    • 我在 pandas.pivot 表上试过,但使用 flatten 返回list' object has no attribute 'flatten' 和pairplot,它只标记左上角的子图
    • 您的代码将 x 轴从顶部 catplot 标记到底部 catplot 通过 a b c d 但我如何用不同的名称标记每个 x 轴?
    • 我不确定我是否理解您如何“在 pandas.pivot 表上进行尝试”。您的问题和我的回答仅适用于 seaborn FacetGrids,例如 catplotpairplot
    • 只需将循环中的'abcd' 替换为您想要获得不同标签的名称列表即可。
    猜你喜欢
    • 2019-08-30
    • 2020-02-17
    • 2021-03-05
    • 2017-03-19
    • 1970-01-01
    • 2017-06-24
    • 1970-01-01
    • 2015-12-19
    • 1970-01-01
    相关资源
    最近更新 更多