在 Matplotlib 中显示所有 xlabels 和 xticks
Show all xlabels and xticks in Matplotlib
我正在尝试使用 matplotlib.pyplot
的 subplot
在单个窗格上绘制多个图形。这是我当前的代码。
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 以了解有关选项和功能的更多信息。
我正在尝试使用 matplotlib.pyplot
的 subplot
在单个窗格上绘制多个图形。这是我当前的代码。
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]
函数
我不知道如何将两者都放在第一行。如果打印出所有 xlabels
,那么它们确实都在那里。
任何帮助将不胜感激!
您只需在循环后调用 plt.tight_layout()
。请参阅 the guide 以了解有关选项和功能的更多信息。