Pandas scatter_matrix: метки по вертикали (x) и по горизонтали (y) без обрезки - PullRequest
1 голос
/ 30 октября 2019

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

axes = pd.plotting.scatter_matrix(df_plot, alpha=0.1, figsize=[10, 10])
n = len(df_plot.columns) - 1
    for x in range(n):
        for y in range(n):
            # to get the axis of subplots
            ax = axes[x, y]
            # to make x axis name vertical
            ax.xaxis.label.set_rotation(90)
            # to make y axis name horizontal
            ax.yaxis.label.set_rotation(0)
            # to make sure y axis names are outside the plot area
            ax.yaxis.labelpad = 25

Проблема заключается в том, что (1) мне нужно настроить панель ярлыков вручную (чтоне вариант, так как у меня есть много таких графиков, созданных из цикла) и (2), что более длинные метки обрезаются краем фигуры (это может быть частично решено с помощью plt.tight_layout (), но это также увеличивает пространство междуразброс сюжета, который я не хочу). Как я могу это исправить? Я предполагаю, что должна быть простая "автоматическая настройка"?

1 Ответ

1 голос
/ 30 октября 2019

Вместо того, чтобы вручную добавлять метки, просто выровняйте текст метки y по правому краю. Затем с помощью метода loo_layout (), чтобы предотвратить обрезание надписей, и, наконец, заново отрегулируйте расстояние между вспомогательными участками до нуля.

import pandas as pd
from matplotlib import pyplot as plt

df = pd.DataFrame(pd.np.random.randn(1000, 4), columns=['A long column name','B is also long','C is even longer ','D is short'])
axes = pd.plotting.scatter_matrix(df, alpha=0.2)
for ax in axes.flatten():
    ax.xaxis.label.set_rotation(90)
    ax.yaxis.label.set_rotation(0)
    ax.yaxis.label.set_ha('right')

plt.tight_layout()
plt.gcf().subplots_adjust(wspace=0, hspace=0)
plt.show()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...