matplotlib 如何在显示器中定制行标签和列标签

5gfr0r5j  于 2023-03-09  发布在  其他
关注(0)|答案(1)|浏览(173)

我使用python中的seaborn库编写了下面的代码,它根据seaborn库中的数据绘制了一个直方图网格:

import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns, numpy as np
from pylab import *

penguins = sns.load_dataset('penguins')

sns.displot(penguins, x='bill_length_mm', col='species', row='island', hue='island',height=3, 
            aspect=2,facet_kws=dict(margin_titles=True, sharex=False, sharey=False),kind='hist', palette='viridis')

plt.show()

这将生成以下直方图网格:

因此,我们有每个物种-岛屿组合的直方图,这些直方图显示了不同企鹅喙长度的频率分布,它们被组织成一个直方图“网格”,其中直方图网格的列是按物种组织的,网格的行是按岛屿组织的,因此,我看到seaborn自动将每个列标签命名为“物种”,其参数为:col= species。然后,我看到seaborn将每行标记为“Count”,各行按岛屿组织,并使用参数中不同的代表性“色调”:色调= island
我试图做的是覆盖这些默认的自动标签来添加我自己的定制。具体来说,我想做的是在“物种”标题下面只用“A”、“B”和“C”替换顶部的轴标签,在左侧的轴上,用每个岛屿的名称替换每个“计数”示例,但所有这些标签的字体都要大得多。
这就是我想要创造的:

我想弄明白的是,如何“覆盖”上述海运参数中的自动标记,以便我可以打印我的自定义直方图网格标签,但要以动态方式完成,这样,如果有可能存在另一个包含更多岛屿和更多物种的数据集,仍将生成预期的标记组织?

nbewdwxp

nbewdwxp1#

sns.displot函数返回一个FacetGrid对象。这个对象允许你用set_titles()set_axis_labels()方法自定义行和列的标题。但是,对于你想要实现的自定义图形,恐怕你必须直接通过FacetGrid.axes覆盖标签和标题,FacetGrid.axes允许你访问matplotlib.Axisndarray

g = sns.displot(penguins, x='bill_length_mm', col='species', row='island', hue='island',height=3,
                aspect=2,facet_kws=dict(margin_titles=True, sharex=False, sharey=False), kind='hist', palette='viridis',
                legend=False)  # Do not display the legend

g.set_titles(row_template="")  # Remove the marginal titles on the right side

# Rewrite the top-row axis titles
custom_colnames = ["A", "B", "C"]
for i, ax in enumerate(g.axes[0]):
    ax.set_title(custom_colnames[i], fontsize=14)  # Adjust the fontsize

# Rewrite the first-col axis ylabels
custom_rownames = penguins["species"].unique()
for i, ax in enumerate(g.axes[:, 0]):
    ax.set_ylabel(custom_rownames[i], fontsize=14, rotation=0, ha="right")

# Remove the last-row axis xlabels
for i, ax in enumerate(g.axes[-1]):
    ax.set_xlabel("")

# Add a figure suptitle
plt.gcf().suptitle("Species", y=1.05, fontsize=16)

非常定制,但应该能给予你理想的身材

相关问题