Как можно определить оси в Matplotlib? - PullRequest
0 голосов
/ 29 марта 2020

Я пытаюсь сделать приведенную ниже сетку графиков немного чище. Я не хочу, чтобы отметки слева и снизу перекрывались. Я попытался определить оси, используя приведенный ниже код, но, похоже, он не работает. У кого-нибудь есть какие-либо предложения?

fig, ax = plt.subplots(figsize=(15,10))
cols = ['x6', 'x7', 'x16', 'x17']
subset = df[cols]
normed_df = (subset-subset.min())/(subset.max()-subset.min())
style.use('seaborn-darkgrid')
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
ax.spines['left'].set_visible(False)
ax.spines['bottom'].set_visible(False)
for sp in range(4):
    ax = fig.add_subplot(2,2, sp+1)
    ax.hist(normed_df[cols[sp]], density=True)
    normed_df[cols[sp]].plot.kde(ax=ax)
ax.tick_params(bottom="off", top="off", left="off", right="off")

После запуска приведенного выше кода, я получаю следующие графики, однако галочки все еще перекрываются. enter image description here

Ответы [ 2 ]

1 голос
/ 29 марта 2020

либо сделайте то, что предложил @Arne:

fig, ax = plt.subplots(rows, cols) #makes a grid of subplots

или сделайте первые две строчки такими:

fig, ax = plt.subplots(figsize=(15,10))
ax.axis('off')

, при этом ось будет удалена вокруг всего вспомогательного участка перед добавлением дополнительных вспомогательных участков.

1 голос
/ 29 марта 2020

Когда вы вызываете plt.subplots() без указания сетки, он создает те оси по всей фигуре, чьи метки и метки мешают вашим меткам на субплоте в конечном графике. Поэтому измените свою первую строку кода следующим образом:

fig, ax = plt.subplots(2, 2, figsize=(15,10))
...