Я пытаюсь создать сюжет, аналогичный тому, что делает seaborn, но в родном matplotlib.
Я строю каждую серию в кадре данных против каждой другой серии в матрице графиков.
До сих пор я наносил на карту это, отмечал внешние оси и устанавливал оси, которые должны быть разделены вдоль столбцов и строк (так как это лучше всего работает с данными).
Последний шаг, который мне не удается сделать, - сделать все графики физически квадратными по размеру. Следующий код:
#scatter matrix
def plot_scatter_matrix(data):
dim = len(data.columns.values)
fig, axs = newfigure(dim, dim, sharex='col', sharey='row', figsize=(10,10))
fig.tight_layout()
for row, iname in enumerate(data.columns.values):
for col, jname in enumerate(data.columns.values):
axs[row,col].scatter(data[jname], data[iname])
if col == 0:
axs[row,col].set_ylabel(iname)
if row == len(data.columns.values)-1:
axs[row,col].set_xlabel(jname)
return fig, axs
fig, axs = plot_scatter_matrix(ndata)
plt.show()
достигает этого (на фото только верхняя половина):

Я попытался использовать axs[row,col].set_aspect(1.0, adjustable='box', share=True)
после вызова scatter()
, однако это просто привело к следующему:

Как видите, некоторым удалось стать физически квадратными, но все они разных размеров.
Внимательно изучив документацию и другие вопросы, я озадачен. Не облегчает, когда другие методы для такого рода вещей устарели по сравнению с предыдущими версиями.