Построение графиков с помощью pandas и seaborn
Библиотека matplotlib может быть инструментом довольно низкого уровня. График собирается из его базовых компонентов: отображения данных (т.е. тип графика: линия, полоса, прямоугольник, разброс, контур и т.д.), легенды, заголовка, меток и других аннотаций. В библиотеке pandas мы можем получить множество столбцов данных, а также метки строк и столбцов. В pandas имеются встроенные методы, которые упрощают визуализацию объектов DataFrame и Series . Еще одна библиотека для статистических графиков — seaborn .
Линейные графики
Объекты Series и DataFrame имеют метод plot для создания базовых типов графиков. По умолчанию plot() создает линейные графики
In [32]: s = pd.Series(np.random.randn(10).cumsum(), index=np.arange(0, 100, 10)) In [33]: s.plot() Out[33]:

Индекс объекта Series передается в plot библиотеки matplotlib для оси \( x \). При этом такое поведение можно отключить с помощью параметра use_index = False . В таблице visual:plt-with-pandas:tbl:1 дается полный список параметров функции Series.plot .
Большинство графических методов pandas принимают опциональный параметр ax , который может являться объектом subplot . Это позволяет размещать подграфики на сетке.
Таблица 2. Параметры метода Series.plot
| Параметр | Описани |
| label | Метка для легенды |
| ax | Объект subplot из matplotlib , в который выводится график. Если не задан — вывод идет в активный подграфик |
| style | Строка, задающая стиль графика (например, ko— ) |
| alpha | Прозрачность заполнения графика (от 0 до 1) |
| kind | Тип графика. Может быть: ‘area’ , ‘bar’ , ‘barh’ , ‘density’, ‘hist’ , ‘kde’ , ‘line’ , ‘pie’ |
| logy | Использовать ли логарифмический масштаб по оси y |
| use_index | Использовать ли объект индекс для меток оси |
| rot | Поворот меток оси |
| xticks | Значения для меток оси x |
| yticks | Значения для меток оси x |
| xlim | Границы по оси x (например, [0, 10] ) |
| ylim | Границы по оси y |
| grid | Отображать ли сетку по осям (включено по умолчанию) |
Метод plot объекта DataFrame выводит график для каждого столбца данных в виде линии на одном и том же подграфике, создавая при этом легенду автоматически:
In [34]: df = pd.DataFrame(np.random.randn(10, 4).cumsum(0), . columns=[‘A’, ‘B’, ‘C’, ‘D’], . index=np.arange(0, 100, 10)) In [35]: df.plot() Out[35]:

Атрибут plot содержит «семейство» методов для различных типов графиков. Например, df.plot() эквивалентно df.plot.line() .
В DataFrame есть несколько параметры, которые обеспечивают некоторую гибкость при обработке столбцов. Например, следует ли разместить их все на одном подграфике или создавать отдельные. В таблице visual:plt-with-pandas:tbl:2 представлены такие параметры.
Таблица 3. Специфичные для DataFrame параметры plot
| Параметр | Описание |
| subplots | Рисовать ли каждый столбец DataFrame в отдельном подграфике |
| sharex | Если subplots=True , использовать ли одну и ту же ось x , связывая метки оси |
| sharey | Если subplots=True , использовать ли одну и ту же ось y |
| figsize | Размер рисунка для создания в виде кортежа |
| title | Заголовок рисунка в виде строки |
| legend | Добавлять ли легенду на рисунок (по умолчанию True ) |
| sort_columns | Отображать ли столбцы в алфавитном порядке |
Столбчатые диаграммы
Методы plot.bar() и plot.barh() строят вертикальные и горизонтальные столбчатые диаграммы. В этом случае индексы объектов Series и DataFrame в качестве меток на оси x ( bar ) или y ( barh ).
In [36]: fig, axes = plt.subplots(2, 1) In [37]: data = pd.Series(np.random.rand(16), index=list(‘abcdefghijklmnop’)) In [38]: data.plot.bar(ax=axes[0], color=‘k’, alpha=0.7) Out[38]: In [39]: data.plot.barh(ax=axes[1], color=‘k’, alpha=0.7) Out[39]:

Параметры color=’k ‘ и alpha=0.7 устанавливают цвет графика в черный и частичную прозрачность для заполнения.
В DataFrame столбчатые диаграммы группируют каждую строку значений вместе в группу столбиков, соответствующих каждому значению в строке:
In [40]: df = pd.DataFrame(np.random.rand(6, 4), . index=[‘one’, ‘two’, ‘three’, ‘four’, ‘five’, ‘six’], . columns=pd.Index([‘A’, ‘B’, ‘C’, ‘D’], name=‘Genus’)) In [41]: df Out[41]: Genus A B C D one 0.927796 0.523404 0.854142 0.581220 two 0.605077 0.625539 0.416703 0.243262 three 0.766480 0.045345 0.151112 0.079766 four 0.911277 0.331451 0.130595 0.408353 five 0.732850 0.283842 0.046650 0.577424 six 0.056685 0.303711 0.126910 0.879065 In [42]: df.plot.bar() Out[42]:

Обратите внимание на то, что имя столбцов ‘Genus’ используется в качестве заголовка легенды. Для создания столбчатых диаграмм с накоплением для DataFrame задается параметр stacked=True , в результате чего значение в каждой строке будут сгруппировано вместе
In [42]: df.plot.barh(stacked=True, alpha=0.5) Out[42]:

Предположим, что есть набор данных по счетам и чаевым в ресторане, и нам нужно построить столбчатую диаграмму с накоплением, показывающую процентное соотношение точек данных для каждого размера группы в каждый день. Загрузим данные из файла tips.csv и создадим сводную по дням и размеру вечеринки (количество человек):
In [43]: tips = pd.read_csv('tips.csv') In [44]: tips.head() Out[44]: total_bill tip smoker day time size 0 16.99 1.01 No Sun Dinner 2 1 10.34 1.66 No Sun Dinner 3 2 21.01 3.50 No Sun Dinner 3 3 23.68 3.31 No Sun Dinner 2 4 24.59 3.61 No Sun Dinner 4 In [45]: party_counts = pd.crosstab(tips['day'], tips['size']) In [46]: party_counts Out[46]: size 1 2 3 4 5 6 day Fri 1 16 1 1 0 0 Sat 2 53 18 13 1 0 Sun 0 39 15 18 3 1 Thur 1 48 4 5 1 3 In [47]: party_counts = party_counts.loc[:, 2:5]
Теперь нормализуем данные так, чтобы сумма в каждой строке была равна \( 1 \) и построим столбчатую диаграмму:
In [48]: party_pcts = party_counts.div(party_counts.sum(1), axis=0) In [49]: party_pcts Out[49]: size 2 3 4 5 day Fri 0.888889 0.055556 0.055556 0.000000 Sat 0.623529 0.211765 0.152941 0.011765 Sun 0.520000 0.200000 0.240000 0.040000 Thur 0.827586 0.068966 0.086207 0.017241 In [50]: party_pcts.plot.bar() Out[50]:

Таким образом, видно, что количество участников вечеринок в данном наборе увеличивается в выходные дни.
В случае, если требуется агрегировать или суммировать данные перед построением графика, использование пакета seaborn может значительно упростить задачу. Давайте посмотрим на процент чаевых в день с помощью библиотеки seaborn :
In [51]: import seaborn as sns In [52]: tips[‘tip_pct’] = tips[‘tip’]/(tips[‘total_bill’] — tips[‘tip’]) In [53]: tips.head() Out[53]: total_bill tip smoker day time size tip_pct 0 16.99 1.01 No Sun Dinner 2 0.063204 1 10.34 1.66 No Sun Dinner 3 0.191244 2 21.01 3.50 No Sun Dinner 3 0.199886 3 23.68 3.31 No Sun Dinner 2 0.162494 4 24.59 3.61 No Sun Dinner 4 0.172069 In [54]: sns.barplot(x=‘tip_pct’, y=‘day’, data=tips, orient=‘h’) Out[54]:

Функция barplot библиотеки seaborn принимает параметр data , который может быть объектом DataFrame . Остальные параметры ссылаются на имена столбцов. Поскольку в день имеется несколько наблюдений, то столбцы диаграммы представляют собой среднее значение параметра tip_pct . Черные линии, нарисованные на столбцах диаграммы, представляют 95-процентный доверительный интервал (это можно настроить с помощью опционального параметра).
Функция barplot имеет параметр hue , который позволяет разделить отображение по дополнительному категориальному значению:
In [55]: sns.barplot(x=‘tip_pct’, y=‘day’, hue=‘time’, data=tips, orient=‘h’) Out[55]:

Гистограммы и графики плотности распределения
Гистограмма — это своего рода столбчатая диаграмма, которая дает дискретное отображение частоты значений. Составим гистограмму процентных долей от общего счета, используя метод plot.hist объекта Series :
In [56]: tips[‘tip_pct’].plot.hist(bins=50) Out[56]:

Связанный с гистограммой тип графиков — график плотности, который формируется путем вычисления оценки непрерывного распределения вероятности, которое могло бы генерироваться наблюдаемыми данными. Обычная процедура заключается в аппроксимации этого распределение как смеси «ядер», то есть более простых распределений, таких как нормальное распределение. Таким образом, графики под графиками плотности также можно понимать графики оценки плотности ядра (*K*ernel *D*ensity *E*stimate). Функции plot.kde и plot.density строят график плотности, используя подход KDE:
In [57]: tips[‘tip_pct’].plot.kde() Out[57]:

Библиотека seaborn упрощает создание гистограмм и графиков плотности с помощью метода distplot , который позволяет одновременно строить как гистограмму, так и непрерывную оценку плотности. В качестве примера рассмотрим бимодальное распределение, состоящее из двух разных стандартных нормальных распределений:
In [58]: comp1 = np.random.normal(0, 1, size=200) In [59]: comp2 = np.random.normal(10, 2, size=200) In [60]: values = pd.Series(np.concatenate([comp1, comp2])) In [61]: sns.distplot(values, bins=100, color=‘k’) Out[61]:

Диаграммы рассеяния или точечные графики
Диаграммы рассеяния полезны при изучении связей между двумя одномерными рядами данных. Например, загрузим набор данных из файла macrodata.csv проекта Statmodels. Выберем некоторые переменные и вычислим «логарифмические разности»:
In [62]: macro = pd.read_csv('macrodata.csv') In [63]: data = macro[['cpi', 'm1', 'tbilrate', 'unemp']] In [64]: trans_data = np.log(data).diff().dropna() In [65]: trans_data[-5:] Out[65]: cpi m1 tbilrate unemp 198 -0.007904 0.045361 -0.396881 0.105361 199 -0.021979 0.066753 -2.277267 0.139762 200 0.002340 0.010286 0.606136 0.160343 201 0.008419 0.037461 -0.200671 0.127339 202 0.008894 0.012202 -0.405465 0.042560
Теперь воспользуемся функцией regplot библиотеки seaborn , которая строит графики рассеяния и предлагает график линейной регрессии:
In [66]: sns.regplot('m1', 'unemp', data=trans_data) Out[66]: In [67]: plt.title('Зависимость $\log$ <> от $\log$ <>'.format('m1', 'unemp')) Out[67]: Text(0.5, 1.0, 'Зависимость $\\log$ m1 от $\\log$ unemp')

При анализе данных полезно иметь возможность просматривать все диаграммы рассеяния среди группы переменных, т.е. строить, так называемые, парные графики или матрицу диаграмм рассеяния. В библиотеке seaborn для этого есть удобная функция pairplot , которая, в частности, поддерживает размещение гистограмм или оценок плотности каждой переменной по диагонали:
In [68]: sns.pairplot(trans_data, diag_kind=‘kde’, plot_kws=‘alpha’: 0.2>) Out[68]:

Категориальные данные
Одним из способов визуализации данных с множеством категориальных переменных является использование сетки фасетов (facet grid). В библиотеке seaborn есть удобная функция catplot , которая упрощает создание сетки фасетов:
In [69]: sns.catplot(x=‘day’, y=‘tip_pct’, hue=‘time’, col=‘smoker’, . kind=’bar’, data=tips[tips.tip_pct < 1])Out[69]:

Вместо отображения разными цветами столбцов диаграмм в фасете мы также можем расширить сетку фасетов, добавив одну строку по времени:
In [70]: sns.catplot(x=‘day’, y=‘tip_pct’, row=‘time’, . col=’smoker’, . kind=’bar’, data=tips[tips.tip_pct < 1])Out[70]:

Функция catplot поддерживает другие типы графиков, которые могут быть полезны. Например, блочные графики, которые показывают медиану, квартили и выбросы:
In [71]: sns.catplot(x=‘tip_pct’, y=‘day’, kind=‘box’, data=tips[tips.tip_pct 0.5]) Out[71]:

Можно создавать свои собственные сетки фасетов, используя более общий класс seaborn.FacetGrid (см. документацию seaborn).
Как отключить создание *.log файла печати?
Форумы CADUser → Autodesk → AutoCAD → Как отключить создание *.log файла печати?
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Сообщения 3
#1 Тема от baly 2 марта 2005г. 12:52:46
Тема: Как отключить создание *.log файла печати?
как избавится от файла print.log
создается в каждой папке с чертежами и мешается
#2 Ответ от AVR 2 марта 2005г. 14:09:55
Re: Как отключить создание *.log файла печати?
Насколько я понял, это то же, что и plot.log.
Команда plotstamp (в русском варианте штемпель). Выбрать Advanced (Дополнительно), снять флажок с опции «Create a log file» (Создать файл журнала)
Как отключить создание файла plot.log в AutoCAD

Популярная программа для проектирования AutoCAD по умолчанию при выводе на печать любого чертежа создаёт файл plot.log, в котором хранится история распечатанных документов: кем, когда, на каком принтере и с какими параметрами была произведена печать… Но многим эта функция не нужна, и они хотели бы отключить её. Это делается не совсем очевидным способом. Давайте посмотрим каким.
Инструкция по отключению файла plot.log в AutoCAD
1 Настройкасвойств печати
Самый первый и очевидный шаг – проверить настройки печати. Для этого идём в меню Сервис, далее Настройка… (если у вас английская версия программы, то Service Options) и открываем вкладку «Печать/Публикация» (Plot and Publish). В разделе «Файл журнала для печати и публикации» (Plot and publish log file) снимаем галочку с пункта Вести журнал автоматически (Automatically save plot and publish log). Нажимаем «ОК».

Теперь попробуйте распечатать какой-нибудь чертёж. Если после этого в папке с чертежом всё равно появился файл plot.log, значит, вероятно, дело в настройках штемпеля чертежа. Переходим к следующему шагу.
2 Настройкаштемпеля чертежа
Снова открываем окно настройки печати и публикации (Сервис Настройка Печать/Публикация) и нажимаем кнопку Штемпели чертежей…. В открывшемся окне «Штемпель чертежа» нажимаем кнопку «Сохранить», указываем директорию, в которой будут храниться параметры штемпеля, и задаём любое имя, например, «shtempel.pss». Снова нажимаем «Сохранить». После этого должны стать активными настройки штемпеля. В этом же окне нажимаем кнопку «Дополнительно».

В открывшемся окне дополнительных свойств только что созданного штемпеля убираем галочку Вести журнал в файле, а затем подтверждаем настройки нажатием кнопки «ОК». Нажимаем ещё раз «ОК», чтобы закрыть окно настроек штемпеля.

Закрываем окно настроек AutoCAD и пробуем распечатать чертёж. Файл plot.log больше не будет автоматически создаваться при печати.
Справочник по MATLAB — Графические команды и функции (В.Г.Потемкин)
Информация в данной статье относится к релизам программы MATLAB ранее 2016 года, и поэтому может содержать устаревшую информацию в связи с изменением функционала инструментов. С более актуальной информацией вы можете ознакомиться в разделе документация MATLAB на русском языке.
В состав системы MATLAB входит мощная графическая подсистема, которая поддерживает как средства визуализации двумерной и трехмерной графики на экран терминала, так и средства презентационной графики. Следует выделить несколько уровней работы с графическими объектами. В первую очередь это команды и функции, ориентированные на конечного пользователя и предназначенные для построения графиков в прямоугольных и полярных координатах, гистограмм и столбцовых диаграмм, трехмерных поверхностей и линий уровня, анимации. Графические команды высокого уровня автоматически контролируют масштаб, выбор цветов, не требуя манипуляций со свойствами графических объектов. Соответствующий низкоуровневый интерфейс обеспечивается дескрипторной графикой, когда каждому графическому объекту ставится в соответствие графическая поддержка (дескриптор), на который можно ссылаться при обращении к этому объекту. Используя дескрипторную графику, можно создавать меню, кнопки вызова, текстовые панели и другие объекты графического интерфейса.
Из-за ограниченного объема данного справочного пособия в него включены только графические команды и функции с минимальными элементами дескрипторной графики. Заинтересованному читателю следует обратиться к документации по системе MATLAB, и в первую очередь к только что вышедшей из печати книге “Using MATLAB Graphics” (Natick, 1996).
Элементарные графические функции системы MATLAB позволяют построить на экране и вывести на печатающее устройство следующие типы графиков: линейный, логарифмический, полулогарифмический, полярный.
Для каждого графика можно задать заголовок, нанести обозначение осей и масштабную сетку.
Двумерные графики
- PLOT — график в линейном масштабе
- LOGLOG — график в логарифмическом масштабе
- SEMILOGX, SEMILOGY — график в полулогарифмическом масштабе
- POLAR — график в полярных координатах
Трехмерные графики
В системе MATLAB предусмотрено несколько команд и функций для построения трехмерных графиков. Значения элементов числового массива рассматриваются как z-координаты точек над плоскостью, определяемой координатами x и y. Возможно несколько способов соединения этих точек. Первый из них — это соединение точек в сечении (функция plot3), второй — построение сетчатых поверхностей (функции mesh и surf). Поверхность, построенная с помощью функции mesh, — это сетчатая поверхность, ячейки которой имеют цвет фона, а их границы могут иметь цвет, который определяется свойством EdgeColor графического объекта surface. Поверхность, построенная с помощью функции surf, — это сетчатая поверхность, у которой может быть задан цвет не только границы, но и ячейки; последнее управляется свойством FaceColor графического объекта surface. Уровень изложения данной книги не требует от читателя знания объектно-ориентированного программирования. Ее объем не позволяет в полной мере описать графическую подсистему, которая построена на таком подходе. Заинтересованному читателю рекомендуем обратиться к документации по системе MATLAB, и в первую очередь к только что вышедшей из печати книге Using MATLAB Graphics (Natick, 1996).
- PLOT3 — построение линий и точек в трехмерном пространстве
- MESHGRID — формирование двумерных массивов X и Y
- MESH, MESHC, MESHZ — трехмерная сетчатая поверхность
- SURF, SURFC — затененная сетчатая поверхность
- SURFL — затененная поверхность с подсветкой
- AXIS — масштабирование осей и вывод на экран
- GRID — нанесение сетки
- HOLD — управление режимом сохранения текущего графического окна
- SUBPLOT — разбиение графического окна
- ZOOM — управление масштабом графика
- COLORMAP — палитра цветов
- CAXIS — установление соответствия между палитрой цветов и масштабированием осей
- SHADING — затенение поверхностей
- CONTOURC — формирование массива описания линий уровня
- CONTOUR — изображение линий уровня для трехмерной поверхности
- CONTOUR3 — изображение трехмерных линий уровня
Надписи и пояснения к графикам
- TITLE — заголовки для двух- и трехмерных графиков
- XLABEL, YLABEL, ZLABEL — обозначение осей
- CLABEL — маркировка линий уровня
- TEXT — добавление к текущему графику текста
- GTEXT — размещает заданный текст на графике с использованием мыши
- LEGEND — пояснение к графику
- COLORBAR — шкала палитры
Специальная графика
Раздел специальной графики включает графические команды и функции для построения столбцовых диаграмм, гистограмм, средств отображения векторов и комплексных элементов, вывода дискретных последовательностей данных, а также движущихся траекторий как для двумерной, так и для трехмерной графики. Этот раздел получил свое дальнейшее развитие в версии системы MATLAB 5.0, где специальные графические средства улучшены и существенно расширены.
- BAR — столбцовые диаграммы
- ERRORBAR — график с указанием интервала погрешности
- HIST — построение гистограммы
- STEM — дискретные графики
- STAIRS — ступенчатый график
- ROSE — гистограмма в полярных координатах
- COMPASS, FEATHER — графики векторов
- QUIVER — поле градиентов функции
- COMET — движение точки по траектории
- FILL — закраска многоугольника
- COMET3 — движение точки по пространственной траектории
- SLICE — сечения функции от трех переменных
- WATERFALL — трехмерная поверхность
- FILL3 — закраска многоугольника в трехмерном пространстве
- VIEWMTX — вычисление матрицы управления углом просмотра
- VIEW — управление положением точки просмотра
Двумерные графики
PLOT — график в линейном масштабе
plot(y)
plot(x, y)
plot(x, y, s)
plot(x1, y1, s1, x2, y2, s2, . )
Команда plot(y) строит график элементов одномерного массива y в зависимости от номера элемента; если элементы массива y комплексные, то строится график plot(real(y), imag(y)). Если Y — двумерный действительный массив, то строятся графики для столбцов; в случае комплексных элементов их мнимые части игнорируются.
Команда plot(x, y) соответствует построению обычной функции, когда одномерный массив x соответствует значениям аргумента, а одномерный массив y — значениям функции. Когда один из массивов X или Y либо оба двумерные, реализуются следующие построения:
- если массив Y двумерный, а массив x одномерный, то строятся графики для столбцов массива Y в зависимости от элементов вектора x;
- если двумерным является массив X, а массив y одномерный, то строятся графики столбцов массива X в зависимости от элементов вектора y;
- если оба массива X и Y двумерные, то строятся зависимости столбцов массива Y от столбцов массива X.
Команда plot(x, y, s) позволяет выделить график функции, указав способ отображения линии, способ отображения точек, цвет линий и точек с помощью строковой переменной s, которая может включать до трех символов из следующей таблицы:
Если цвет линии не указан, он выбирается по умолчанию из шести первых цветов, с желтого до синего, повторяясь циклически.
Команда plot(x1, y1, s1, x2, y2, s2, . ) позволяет объединить на одном графике несколько функций y1(x1), y2(x2), . определив для каждой из них свой способ отображения.
Обращение к командам plot вида plot(x, y, s1, x, y, s2) позволяет для графика y(x) определить дополнительные свойства, для указания которых применения одной строковой переменной s1 недостаточно, например при задании разных цветов для линии и для точек на ней.
Примеры:
Построим график функции y = sin(x) на отрезке [- p p ] с шагом p /500:
x = -pi:pi/500:pi;
y = sin(x);
plot(y) % рис. а
plot(x, y) % рис. б
График на рис. а отображает значения одномерного массива y, состоящего из 1001 элемента, как функцию от номера элемента; график на рис. б отображает значения того же массива как функцию элементов массива x.
Рассмотрим различные способы применения функции plot(x, y) на примере графиков двух функций y1 = sin(x) и y2 = xsin(x):
x1 = -pi:pi/500:pi;
y1 = sin(x1);
y2 = x1.*sin(x1);
plot(x1′,[y1′ y2′]) % рис. в
plot( [y1′ y2′], x1′) % рис. г
x2 = x1/2;
y2 = x2.*sin(x2);
plot([x1′ x2′], [y1′ y2′]) % рис. д