在 Matplotlib 中显示所有 xlabels 和 xticks

Show all xlabels and xticks in Matplotlib

我正在尝试使用 matplotlib.pyplotsubplot 在单个窗格上绘制多个图形。这是我当前的代码。

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

df = pd.DataFrame({"col1": [1,2], "col2": [3,4], "col3": [5,6], "col4": [7,8], "target": [9,10]})

f, axs = plt.subplots(nrows = 2, ncols = 2, sharey = True)

# for ax in axs.flat:
#     ax.label_outer()

for k, col in enumerate(df.columns):
    if col != "target":
        idx = np.unravel_index(k, (2,2))
        axs[idx].scatter(df[col], df.target)
        axs[idx].set_xlabel(col)

就目前而言,注释掉两行后,这将打印所有 xticks,但仅打印底部两个图的 xlabels

如果我取消注释这两行,那么所有 xlabels 都会出现,但顶行的 xticks 会消失。我认为这是因为 space 已被 [label_outer][2] 函数

'freed up'

我不知道如何将两者都放在第一行。如果打印出所有 xlabels,那么它们确实都在那里。

任何帮助将不胜感激!

您只需在循环后调用 plt.tight_layout()。请参阅 the guide 以了解有关选项和功能的更多信息。