{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Научная графика в Python\n", "\n", "Автор: Шабанов Павел Александрович\n", "\n", "E-mail: pa.shabanov@gmail.com\n", "\n", "URL: [Заметки по программированию в науках о Земле](http://progeoru.blogspot.ru/)\n", "\n", "Дата последнего обновления: 12.03.2017" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Преамбула\n", "%matplotlib inline\n", "\n", "import os\n", "import matplotlib.pyplot as plt\n", "from matplotlib import rcParams\n", "\n", "import numpy as np\n", "\n", "def save(name='', fmt='png'):\n", " pwd = os.getcwd()\n", " iPath = './pictures/{}'.format(fmt)\n", " if not os.path.exists(iPath):\n", " os.mkdir(iPath)\n", " os.chdir(iPath)\n", " plt.savefig('{}.{}'.format(name, fmt), fmt='png')\n", " os.chdir(pwd)\n", " #plt.close()\n", "\n", "rcParams['font.family'] = 'fantasy'\n", "rcParams['font.fantasy'] = 'Arial'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Глава 8 Координатные оси Axis\n", "\n", "### Содержание главы\n", "\n", "1. Контейнер Axis;\n", "\n", "2. Главные и вспомогательные деления;\n", "\n", "3. Настройка координатной оси.\n", "\n", "Данные, насённые тем или иным графическим способомна рисунок Figure и область рисования Axes, не представляют особого интереса для научного анализа, пока они не привязаны к какой-либо системе координат. При создании экземпляра axes на вновь созданной области рисования автоматически задаётся прямоугольная система координат, если не указаны атрибуты polar или projection. Подробнее про области рисования с другими системами координат смотри главу \"Графики в полярных координатах\".\n", "\n", "Система координат определяет вид координатных осей. По умолчанию задаётся прямоугольная система координат: ось абсцисс (ось \"OX\") и ось ординат (ось \"OY\"). В полярной системе координат координатными осями являются радиус и угол наклона, что выражается в виде своеобразного тригонометрического круга.\n", "\n", "Для хранения и форматирования каждой координатной оси и существует контейнер Axis.\n", "\n", "### Электронные ресурсы:\n", "\n", "+ [Описание элементов рисунка в matplotlib](http://matplotlib.org/users/artists.html);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 8.1 Контейнер Axis\n", "\n", "Axis (не путать с областями рисования Axes) - это третья \"матрёшка\" (после Figure и Axes) или контейнер в matplotlib, которая привязана к области рисования Axes и на которой располагаются деления осей (ticks), подписи делений (tick labels) и подписи осей (axis labels).\n", "\n", "Координатные оси являются экземплярами класса matplotlib.axis.Axis.\n", "\n", "Любая область рисования Axes содержит два особых Artist-контейнера: XAxis и YAxis. Они отвечают за отрисовку делений (ticks) и подписей (labels) координатных осей, которые хранятся как экземпляры в переменных xaxis и yaxis. Чтобы обратиться к экземпляру axis, отвечающему за ось ординат, нужно обратиться к контейнеру yaxis соответствующей области рисования ax. Причём запись \"`yax=ax.get_yaxis()`\" идентична записи \"`yax=ax.yaxis`\".\n", "\n", "Каждый экземпляр axis содержит атрибут подписей (label) координатной оси и список главных (major ticks) и вспомогательных (minor ticks) делений, а также является хранилищем для экземпляров делений (ticks). Деления - это экземпляры класса `matplotlib.axis.Tick`, которые визуализируют деления (их размер, цвет, толщину и т.д.) и подписи к ним. Деления создаются динамически исходя из области изменения переданных данных. В результате на координатной оси появляются и хранятся экземпляры классов `matplotlib.axis.XTick` и `matplotlib.axis.YTick`. Они родственны классу `matplotlib.axis.Tick`. Хотя все графические примитивы, с помощью которых создаётся облик координатной оси содержатся в делениях ticks, о которых будет показано в следующей главе, у экземпляров axis есть средства для управления линиями делений (tick lines), подписями делений (tick labels), а также местоположением делений (tick locations)." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "('Major X-ticks locations:', array([ 0., 20., 40., 60., 80., 100.]))\n", "('Major X-ticks labels:', )\n", "('Major X-ticks tick lines:', )\n" ] }, { "data": { "image/png": "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\nGvssKwAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Пример 8.1.1\n", "\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "fig = plt.figure()\n", "\n", "ax = fig.add_subplot(111)\n", "\n", "x = np.arange(100)\n", "y = -np.exp(-0.3*x) + 2.33\n", "\n", "ax.plot(x, y, 'k')\n", "\n", "xax = ax.xaxis # или xax = ax.get_xaxis()\n", "\n", "xlocs = xax.get_ticklocs()\n", "print ('Major X-ticks locations:', xlocs)\n", "xlabels = xax.get_ticklabels()\n", "print ('Major X-ticks labels:', xlabels)\n", "xlines = xax.get_ticklines()\n", "print ('Major X-ticks tick lines:', xlines)\n", "\n", "# Линии вспомогательной сетки (главные деления) только по оси абсцисс\n", "xax.grid(True)\n", "\n", "for label in xlabels:\n", " # цвет подписи деленений оси OX\n", " label.set_color('blue')\n", " # поворот подписей деленений оси OX \n", " label.set_rotation(45)\n", " # размер шрифта подписей делений оси OX \n", " label.set_fontsize(14)\n", "\n", "save('pic_8_1_1', fmt='png')\n", "save('pic_8_1_1', fmt='pdf')\n", " \n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 8.2 Главные и вспомогательные деления\n", "\n", "В matplotlib деления на координатной оси могут быть главными (major ticks) или вспомогательными (minor ticks). По умолчанию наносятся главные деления, к ним привязывается нанесение вспомогательной сетки grid, за которую отвечает параметр axes.grid.which': u'major' из rcParams. Работа со вспомогательными делениями ничем не отличается от работы с главными делениями: используются те же методы, но явно указывается тип делений через определённый атрибут. Обычно этот атрибут называется which (принимает значения 'major'/'minor') или булевый атрибут minor.\n", "\n", "Ниже представлен список некоторых методов Axis. Они применяются к экземплярам xaxis или yaxis. Так как при работе с атрибутами поддерживается идеология \"set-get\", то списке указаны методы только с приставкой \"set_\". Для получения значений атрибутов какой-либо характеристики, нужно в методе заменить приставку \"set\" на \"get\": set_scale -> get_scale; get_data_interval -> set_data_interval и так далее.\n", "\n", "----------------------------------------------------------\n", "\n", "Вспомогательный метод -> Описание\n", "\n", "----------------------------------------------------------\n", "\n", "+ **set_scale** -> определяет характер изменений значений на оси: линейный 'linear' (по умолчанию) или 'log' логарифмический;\n", "\n", "+ **set_view_interval** -> экземпляр интервала области изменения отображений по оси axis;\n", "\n", "+ **set_data_interval** -> экземпляр интервала области изменения данных по оси axis;\n", "\n", "+ **set_gridlines** -> список линий сетки для Axis;\n", "\n", "+ **set_label** -> подпись оси, экземпляр Text;\n", "\n", "+ **set_ticklabels** -> подписи делений, список экземпляров Text. Тип делений определяет параметр minor=True/False;\n", "\n", "+ **set_ticklines** -> конфигурация делений, список экземпляров Line2D. Тип делений определяет параметр minor=True/False;\n", "\n", "+ **set_ticklocs** -> положение делений. Тип делений определяет параметр minor=True/False;\n", "\n", "+ **set_major_locator** -> экземпляр matplotlib.ticker.Locator для главных (major) делений;\n", "\n", "+ **set_major_formatter** -> экземпляр matplotlib.ticker.Formatter для главных делений;\n", "\n", "+ **set_major_ticks** -> список экземпляров Tick для главных делений;\n", "\n", "+ **set_minor_locator** -> экземпляр matplotlib.ticker.Locator для вспомгательных (minor) делений;\n", "\n", "+ **set_minor_formatter** -> экземпляр matplotlib.ticker.Formatter для вспомогательных делений;\n", "\n", "+ **set_minor_ticks** -> список экземпляров Tick для вспомогательных делений;\n", "\n", "+ **grid** -> определяет будет ли отображаться линии сетки для главной или вспомогательных делений (параметр which='major'/'minor');\n", "\n", "----------------------------------------------------------\n" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "('Major X-ticks tick lines:', )\n", "('Major X-ticks location:', array([ 0., 20., 40., 60., 80., 100.]))\n", "('Major X-ticks labels:', )\n", "('Major X-ticks tick lines:', )\n", "('Minor X-ticks location:', [])\n", "('Minor X-ticks labels:', )\n", "----------------------------\n", "Тип изменения оси: linear\n", "Область изменения отображения данных: [ 0. 100.]\n", "Область изменения отображения данных: [ 0. 99.]\n", "Линии сетки: \n", "Подпись оси: Text(0.5,0,u'')\n", "Подписи делений: \n", "Линии делений: \n", "Расположение делений: [ 0. 20. 40. 60. 80. 100.]\n", "locator главных делений: \n", "formatter главных делений: \n", "Список главных делений оси: [, , , , , ]\n", "locator вспомогательных делений: \n", "formatter вспомогательных делений: \n", "Список вспомогательных делений оси: []\n", "----------------------------\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Пример 8.2\n", "\n", "fig = plt.figure()\n", "\n", "ax = fig.add_subplot(111)\n", "rect = ax.patch\n", "rect.set_facecolor('lightslategray')\n", "rect.set_alpha(0.25)\n", "\n", "x = np.arange(100)\n", "y = np.exp(-0.3*x) + 2.33\n", "\n", "ax.plot(x, y, 'green')\n", "\n", "xax = ax.xaxis # экземпляр xaxis\n", "\n", "print ('Major X-ticks tick lines:', xax.get_ticklines())\n", "print ('Major X-ticks location:', xax.get_ticklocs())\n", "print ('Major X-ticks labels:', xax.get_ticklabels())\n", "\n", "print ('Major X-ticks tick lines:', xax.get_ticklines(minor=True))\n", "print ('Minor X-ticks location:', xax.get_ticklocs(minor=True))\n", "print ('Minor X-ticks labels:', xax.get_ticklabels(minor=True))\n", "\n", "# вспомогательная сетка для главных делений \n", "ax.grid(True, which=u'major', color='w', linewidth=2., linestyle='solid')\n", "\n", "# вспомогательная сетка для вспомогательных делений \n", "ax.grid(True, which=u'minor', color='b')\n", "\n", "# Ось абсцисс\n", "for label in ax.xaxis.get_ticklabels():\n", " # label - это экземпляр текста Text\n", " label.set_color('red')\n", " label.set_rotation(-45)\n", " label.set_fontsize(15)\n", "\n", "# Ось ориднат\n", "for line in ax.yaxis.get_ticklines():\n", " # line - это экземпляр плоской линии Line2D\n", " line.set_color('blue') # задаём цвет линии деления\n", " line.set_markersize(14) # задаём длину линии деления\n", " line.set_markeredgewidth(3) # задаём толщину линии деления\n", "\n", "print ('----------------------------')\n", "print u'Тип изменения оси:', xax.get_scale()\n", "print u'Область изменения отображения данных:', xax.get_view_interval()\n", "print u'Область изменения отображения данных:', xax.get_data_interval()\n", "print u'Линии сетки:', xax.get_gridlines()\n", "print u'Подпись оси:', xax.get_label()\n", "print u'Подписи делений:', xax.get_ticklabels()\n", "print u'Линии делений:', xax.get_ticklines()\n", "print u'Расположение делений:', xax.get_ticklocs()\n", "print u'locator главных делений:', xax.get_major_locator()\n", "print u'formatter главных делений:', xax.get_major_formatter()\n", "print u'Список главных делений оси:', xax.get_major_ticks()\n", "print u'locator вспомогательных делений:', xax.get_minor_locator()\n", "print u'formatter вспомогательных делений:', xax.get_minor_formatter()\n", "print u'Список вспомогательных делений оси:', xax.get_minor_ticks()\n", "print ('----------------------------')\n", "\n", "save('pic_8_2', fmt='png')\n", "save('pic_8_2', fmt='pdf')\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 8.3 Настройка координатной оси\n", "\n", "Одну и ту же настройку координатных осей (тип, частота, подписи делений, их цвет, шрифт и размер, а также положение и многое другое) можно провести разными способами. Так как в экземпляре Axes всегда есть выход на экземпляры Axis (XAxis и YAxis), то и большинстов удобных для пользователя методов настройки координатной оси привязаны к экземплярам Axes. \n", "\n", "Одним из способов привести координатную ось в нужный пользователю вид заключается в применении методов \"set-get\" для объектов типа Axes:\n", "\n", "+ **`ax.get_xticks()`** - получить список местоположения делений (по умолчанию главных) на оси абсцисс;\n", "\n", "+ **`ax.set_xticklabels()`** - задать значения подписей для текущего местоположения делений (по умолчанию главных) на оси абсцисс;\n", "\n", "+ **`ax.get_yticks()`** - получить список местоположения делений (по умолчанию главных) на оси ординат;\n", "\n", "+ **`ax.set_yticklabels()`** - задать значения подписей для текущего местоположения делений (по умолчанию главных) на оси ординат.\n", "\n", "Методы `\\*ticklabels()` принимают множество параметров, с помощью которых, можно настроить внешний вид (цвет, поворот вокруг оси, шрифт, стиль шрифта и т.д.) текстовой подписи. Любая подпись - это экземпляр Text и работать с ним нужно соответствующими методами." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "('Xticks:', array([-6., -4., -2., 0., 2., 4., 6.]))\n", "('Yticks:', array([ 2.5, 3. , 3.5, 4. , 4.5, 5. , 5.5, 6. , 6.5, 7. ]))\n", "Yticklabels: \n", "Каждый label - это \n" ] }, { "data": { "image/png": "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\nTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Пример 8.3.1\n", "\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "x = np.arange(-5, 6)\n", "y = np.exp(-0.3*x) + 2.33\n", "\n", "fig = plt.figure()\n", "ax1 = fig.add_subplot(211)\n", "ax1.plot(x, y)\n", "ax1.grid(True)\n", "\n", "ax2 = fig.add_subplot(212)\n", "ax2.plot(x, y)\n", "ax2.grid(True)\n", "\n", "xticks = ax2.get_xticks()\n", "yticks = ax2.get_yticks()\n", "\n", "xx = np.arange(-10, 11, 2)\n", "yy = np.arange(0, 11)\n", "\n", "print('Xticks:', xticks)\n", "print('Yticks:', yticks)\n", "\n", "xlabels = []\n", "ylabels = []\n", "for i in xx:\n", " xlabels.append('X point %d' % i)\n", "\n", "for j in yy:\n", " ylabels.append('Y point %d' % j)\n", " \n", "ax2.set_xticks(xx)\n", "ax2.set_yticks(yy)\n", "ax2.set_yticklabels(ylabels, color='green')\n", "ax2.set_xticklabels(xlabels, color='green', rotation=315)\n", "\n", "yticklabels = ax2.get_yticklabels()\n", "print('Yticklabels: %s' % type(yticklabels))\n", "print('Каждый label - это %s' % (type(yticklabels[0])))\n", "\n", "save('pic_8_3_1', fmt='png')\n", "save('pic_8_3_1', fmt='pdf')\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Для удобства пользователей многие методы настройки, требующие работы непосредственно с экземплярами Ticks, были продублированы в виде заскриптованных методов для объектов Axes. Далее показаны основные приёмы с помощью которых можно работать с координатными осями.\n", "\n", "Для облегчения доступа к настройкам делений, требующим работы непосредственно с экземплярами Ticks, в matplotlib был сделан метод `ax.tick_params`, который позволяет быстро и просто настраивать расположение и отображение делений координатных осей и их подписей. Ниже приводится список атрибутов данного метода:\n", "\n", "1. **axis** : ['x' | 'y' | 'both'] - экземпляр Axis на котором находятся деления; по умолчанию 'both';\n", "\n", "2. **reset** : [True | False] - если True, то значения всех параметров сбрасываются на значения по умолчанию. По умолчанию равен False;\n", "\n", "3. **which** : ['major' | 'minor' | 'both'] - определяет принадлежность к типу делений. По умолчанию 'major';\n", "\n", "4. **direction** : ['in' | 'out' | 'inout'] - определяет направление делений (внутрь, вовне или и снаружи и внутри);\n", "\n", "5. **length** - длиная деления в точках (points);\n", "\n", "6. **width** - ширина деления в точках (points);\n", "\n", "7. **color** - цвет деления. Возможен любой цвет, приемлимый в matplotlib;\n", "\n", "8. **pad** - расстояние в точках между делением и подписью к нему;\n", "\n", "9. **labelsize** - размер шрифта подписи деления в виде строки (например, 'large') или числа;\n", "\n", "10. **labelcolor** - цвет подписи деления. Возможен любой цвет, приемлимый в matplotlib;\n", "\n", "11. **colors** - изменяет цвет деления и цвет подписи деления на одно значение. Возможен любой цвет, приемлимый в matplotlib;\n", "\n", "12. **zorder** - zorder деления и подписи деления;\n", "\n", "13. **bottom, top, left, right** : [bool | 'on' | 'off'] - каждый из параметров контролирует отображение делений на соответствующей оси;\n", "\n", "14. **labelbottom, labeltop, labelleft, labelright** : [bool | 'on' | 'off'] - каждый из параметров контролирует отображение подписи делений на соответствующей оси.\n", "\n", "Правда метод tick_params не имеет параметра rotation. Чтобы повернуть подписи делений, нужно воспользоваться иным способом, например указать этот параметр явно через метод `ax.set_xticklabels`." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nRl3y/wEwnNvu1AGiigAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Пример 8.3.2\n", "\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "x = np.arange(-5, 6)\n", "y = np.exp(-0.3*x) + 2.33\n", "\n", "fig = plt.figure()\n", "ax1 = fig.add_subplot(121)\n", "ax1.plot(x, y)\n", "ax1.grid(True)\n", "\n", "# Настройка оси главных делений для оси абсцисс \n", "ax1.tick_params(axis='x', which='major', direction='inout',\n", " bottom=True, top=False, left=True, right=False, \n", " color='b', labelcolor='g',\n", " labelbottom=True, labeltop=False, labelleft=True, labelright=False)\n", "# Настройка оси главных делений для оси ординат \n", "ax1.tick_params(axis='y', which='major', direction='inout',\n", " bottom=True, top=False, left=True, right=False, \n", " color='r', labelcolor='pink',\n", " labelbottom=True, labeltop=False, labelleft=True, labelright=False)\n", "\n", "# Метод tick_params не имеет параметра rotation. Поэтому чтобы повернуть подписи\n", "# нужно сделать это явно через метод set_xticklabels\n", "xticks = ax1.get_xticks()\n", "ax1.set_xticklabels(xticks, rotation=45)\n", "\n", "ax2 = fig.add_subplot(122, frameon=False)\n", "ax2.plot(x, y)\n", "ax2.grid(True)\n", "\n", "ax2.tick_params(axis='x', which='major', direction='out',\n", " bottom=True, top=True, left=True, right=True, \n", " color='blue', labelcolor='grey',\n", " labelbottom=True, labeltop=True, labelleft=True, labelright=True)\n", "ax2.tick_params(axis='x', which='minor', direction='both',\n", " bottom=True, top=False, left=True, right=False, \n", " color='r', labelcolor='pink',\n", " labelbottom=True, labeltop=False, labelleft=True, labelright=False)\n", "\n", "plt.tight_layout()\n", "\n", "save('pic_8_3_2', fmt='png')\n", "save('pic_8_3_2', fmt='pdf')\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nTJxzzmXs/wNXRP6HuLcSbAAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Пример 8.3.3\n", "\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "x = np.arange(-90, 92.5 , 2.5)\n", "y = 113.3*np.cos(x*np.pi/180.)\n", "z = 113.3*np.sin(x*np.pi/180.)\n", "\n", "fig = plt.figure()\n", "\n", "ax = fig.add_subplot(211)\n", "ax.plot(x, y)\n", "\n", "ax.tick_params(axis='x', which='major', \n", " labelleft='off', labelright='off', labeltop='on', labelbottom='on', \n", " bottom=True, top=True,\n", " direction='in', length=10, width=4, colors='g')\n", "\n", "old_major = ax.get_xticks()\n", "N = 0.25\n", "lag = (old_major[1] - old_major[0])*N\n", "new_minor = np.arange(old_major[0] + lag, old_major[-1], 2*lag)\n", "ax.set_xticks(new_minor, minor = True)\n", "\n", "ax.tick_params(axis='x', which='minor', \n", " labeltop='on', labelbottom='on', \n", " bottom=True, top=True,\n", " direction='inout', length=5, width=2, colors='cyan')\n", "\n", "ax.tick_params(axis='y', \n", " labelleft='off', labelright='off',\n", " left=False, right=False)\n", "\n", "ax.grid(True, which='major')\n", "ax.grid(True, which='minor')\n", "\n", "ax.yaxis.set_label_position('left')\n", "ax.set_ylabel(u'Слева')\n", "ax.xaxis.set_label_position('top')\n", "ax.set_xlabel(u'Сверху')\n", "\n", "# ************************************************\n", "ax = fig.add_subplot(212)\n", "\n", "ax.plot(x, y)\n", "ax.tick_params(axis='both', reset=True)\n", "\n", "ax.tick_params(axis='y', which='major', \n", " labelleft='on', labelright='on', \n", " left=True, right=True,\n", " direction='out', length=10, width=1., colors='r')\n", "\n", "old_major = ax.get_yticks()\n", "N = 0.25\n", "lag = (old_major[1] - old_major[0])*N\n", "new_minor = np.arange(old_major[0] + lag, old_major[-1], 2*lag)\n", "ax.set_yticks(new_minor, minor = True)\n", "\n", "ax.tick_params(axis='y', which='minor', \n", " labelleft='on', labelright='on', \n", " left=True, right=True,\n", " direction='inout', length=5, width=1., colors='k')\n", "\n", "ax.tick_params(axis='x',\n", " labeltop='off', labelbottom='off', \n", " bottom=False, top=False)\n", "\n", "ax.yaxis.set_label_position('right')\n", "ax.set_ylabel(u'Справа', rotation=270)\n", "\n", "ax.xaxis.set_label_position('bottom')\n", "ax.set_xlabel(u'Снизу')\n", "\n", "ax.grid(True, axis='y', which='major', color='red')\n", "ax.grid(True, axis='y', which='minor', color='k')\n", "\n", "save('pic_8_3_3', fmt='png')\n", "save('pic_8_3_3', fmt='pdf')\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Автор: Шабанов Павел Александрович\n", "\n", "E-mail: pa.shabanov@gmail.com\n", "\n", "## Научная графика в Python\n", "\n", "### Оглавление\n", "\n", "+ [Глава 1 Библиотека matplotlib. Pyplot](http://nbviewer.ipython.org/github/whitehorn/Scientific_graphics_in_python/blob/master/P1 Chapter 1 Pyplot.ipynb)\n", "\n", "+ [Глава 2 Основные графические команды](http://nbviewer.ipython.org/github/whitehorn/Scientific_graphics_in_python/blob/master/P1 Chapter 2 Main graphical commands.ipynb)\n", "\n", "+ [Глава 3 Работа с текстом и шрифтами](http://nbviewer.ipython.org/github/whitehorn/Scientific_graphics_in_python/blob/master/P1 Chapter 3 Text and Fonts.ipynb)\n", "\n", "+ [Глава 4 Цвет и цветовая палитра](http://nbviewer.ipython.org/github/whitehorn/Scientific_graphics_in_python/blob/master/P1 Chapter 4 Color.ipynb)\n", "\n", "**Часть II Структура рисунка в matplotlib**\n", "\n", "+ [Глава 5 Рисунок](http://nbviewer.ipython.org/github/whitehorn/Scientific_graphics_in_python/blob/master/P2 Chapter 5 Figure container.ipynb)\n", "\n", "+ [Глава 6 Область рисования](http://nbviewer.ipython.org/github/whitehorn/Scientific_graphics_in_python/blob/master/P2 Chapter 6 Axes container.ipynb)\n", "\n", "+ [Глава 7 Мультиоконные рисунки](http://nbviewer.ipython.org/github/whitehorn/Scientific_graphics_in_python/blob/master/P2 Chapter 7 Subplots.ipynb)\n", "\n", "> + [Глава 8 Координатные оси](http://nbviewer.ipython.org/github/whitehorn/Scientific_graphics_in_python/blob/master/P2 Chapter 8 Axis container.ipynb)\n", "\n", "+ [Глава 9 Деления координатных осей](http://nbviewer.ipython.org/github/whitehorn/Scientific_graphics_in_python/blob/master/P2 Chapter 9 Ticks container.ipynb)\n", "\n", "**Часть III Специальные элементы рисунка в matplotlib**\n", "\n", "+ [Глава 10 Особенности координатных осей](http://nbviewer.ipython.org/github/whitehorn/Scientific_graphics_in_python/blob/master/P3 Chapter 10 Twinx and log scale.ipynb)\n", "\n", "+ [Глава 11 Графики в полярной системе координат](http://nbviewer.ipython.org/github/whitehorn/Scientific_graphics_in_python/blob/master/P3 Chapter 11 Polar plots.ipynb) \n", "\n", "+ [Глава 12 Легенда](http://nbviewer.ipython.org/github/whitehorn/Scientific_graphics_in_python/blob/master/P3 Chapter 12 Legends.ipynb)\n", "\n", "+ [Глава 13 Цветовая шкала](http://nbviewer.ipython.org/github/whitehorn/Scientific_graphics_in_python/blob/master/P3 Chapter 13 Colorbar.ipynb)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python [default]", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.13" } }, "nbformat": 4, "nbformat_minor": 0 }