#python #matplotlib #jupyter-notebook #jupyter
#питон #matplotlib #юпитер-записная книжка #юпитер
Вопрос:
Я использую блокнот jupyter в качестве песочницы для своих тестов. Мне это нравится, потому что легко просто генерировать слайды, чтобы показать некоторые графики при обсуждении результатов с помощью масштабирования. Однако у меня есть небольшая проблема.
Я написал функцию, которая захватывает несколько столбцов моего набора данных, выполняет с ними некоторые вычисления, а затем строит все возможные комбинации одного столбца против другой. Я хочу, чтобы они были видны в натуральную величину, а не в микро, как на pandas.scatter_matrix
графике. Но результаты слишком велики, чтобы поместиться на одном слайде. Есть ли какой-нибудь способ разделить его? На данный момент я активировал полосу прокрутки, и я могу прокручивать слайд вниз, но это некрасиво (я использую Reveal)
jupyter nbconvert my_notebook.ipynb --to slides --post serve --SlidesExporter.reveal_scroll=True
%matplotlib inline import matplotlib.pyplot as plt import numpy as np from itertools import combinations fruit_data = np.random.randn(500,5) fruit_names = ['Apples', 'Bananas', 'Oranges', 'Mangoes', 'Kiwis'] def plot_data(data, labels): n_series = data.shape[1] plot_index = list(combinations(np.arange(n_series), 2)) fig = plt.figure(figsize=(12,5*len(plot_index))) for i,plot in enumerate(plot_index): ax = fig.add_subplot(len(plot_index), 1, i 1) ax.scatter(data[:, plot[0]], data[:, plot[1]]) # Get axis labels ax.set_xlabel(labels[plot[0]]) ax.set_ylabel(labels[plot[1]]) plot_data(fruit_data, fruit_names)
Результат такой. В реальном случае в данных больше функций, несколько серий, с разными цветами, тенденциями и т. Д.
Комментарии:
1. Вместо подзаголовков вы можете построить их отдельно, чтобы они не были одной фигурой, или построить их двумя столбцами
2. Я не думаю, что существует простой способ программно заполнить другие ячейки. Однако, если вы перестроите свой сценарий plot_data так, чтобы делать только несколько за раз, вы можете просто делать
plot_data(group1)
в первой ячейке,plot_data(group2)
во второй и т. Д.3. Спасибо @JodyKlymak. Я так и делал, но это было утомительно, поэтому я вложил все в функцию. Я не уверен, что у matplotlibs есть другая структура, кроме подзаголовков, которая позволяет мне строить графики программно. В любом случае, я предполагаю, что то, что работает в ноутбуке, не всегда подходит для слайд-шоу
4. Я имею в виду, что Matplotlib может делать все, что вы хотите, его jupyter, который хочет назначить каждую ячейку слайду, который является ограничивающим фактором.