Это правда, что MatPlotlib является фантастическим визуализирующим инструментом в Python. Но это также правда, что настройка деталей в Matplotlib является настоящей болью. Вы можете легко потерять часы, чтобы узнать, как изменить небольшую часть вашего участка. Иногда вы даже не знаете название части, что делает гудящиком сложнее. Даже если вы найдете подсказку на переполнении стека, вы можете провести еще пару часов, чтобы заставить его соответствовать вашему делу. Эти нередующие задачи можно избежать, зная, какая цифра в Matplotlib состоит из и что вы можете сделать с ними. Как и большинство из вас, я думаю, я преодолел мои проблемы с заговором, читая много ответов Matplotlib Gurus на переполнении стека. Недавно я заметил, что Официальный учебник о Художник
Объекты Очень информативно и полезно понять, что происходит, когда мы замышляем с MatPlotlib и уменьшить большое количество времени, потраченное на настройку 1 Отказ В этом посте я хотел бы поделиться некоторыми базовыми знаниями о Художник
Объекты в Matplotlib, который помешает вам проводить часы для настройки.
Я не собираюсь писать о том, как «Мне нравится», когда вы хотите сделать это », но базовая концепция Художник
В MatPlotlib, который помогает вам выбрать подходящие поисковые запросы и организовать решение для аналогичной проблемы, как ваши. Прочитав это, вы, вероятно, поняли эти огромные рецепты в Интернете более четко. Это также относится к тем, кто использует морские и построенные особенности пандов, которые являются обенновалы MATPLOTLIB.
Этот пост в основном английская версия Оригинальная статья, которую я написал на японском и в основном основывается на Учебное пособие по художнику и Руководство по использованию (2.1.1 во время публикации оригинального)
Matplotlib пользователи ВОЗ
- Могут сделать участки, если это необходимо, но часто бороться, чтобы сделать их подходящими для публикации или презентации (и раздражена «последней милой» к тому, что вы действительно хотите).
- Успешно нашли точное решение на переполнении стека, но все еще умашены, как это работает и не может применить его к другим проблемам.
- Нашел несколько намеков на проблему, но не уверен, что для последующей деятельности.
- Python 3.6.
- matplotlib 2.2.
%matplotlib inline import matplotlib.pyplot as plt import numpy as np
PLT.Show ()
опущен в этой статье, потому что я использую встроенный сюжет Jupyter Notebook.
Прежде чем смотреть в Художник
объекты, я хотел бы упомянуть разницу между PLT.PLOT.
и ax.plot
или Pyplot и объектно-ориентированные API. Хотя объектно-ориентированный стиль API официально рекомендуется, есть еще много примеров и кодовых фрагментов, использующих стиль Pyplot, включая официальные документы. Некоторые даже бессмысленно смешивают оба стиля, которые вызывают ненужное замешательство для начинающих. Поскольку официальный документ имеет хорошие заметки о них, таких как Примечание на объектно-ориентированном API VS Pyplot и Стили кодирования Здесь я только делаю некоторые комментарии к ним. Если вы ищете для них введение, я рекомендую официальные учебники.
Объектно-ориентированный интерфейс API
Это рекомендуемый стиль, который часто начинается с Рис, .subplots ()
или другие эквиваленты, а затем ax.plot
, ax.imshow
и Т. Д. Инжир
и топор
на самом деле, Художник
с. Вот несколько простейших примеров.
fig, ax = plt.subplots() ax.plot(x,y)
fig = plt.figure() ax = fig.add_subplot(1,1,1) ax.plot(x, y)
Некоторые учебники используют fig.gcf ()
и AX.GCA ()
Отказ Они должны использоваться, когда вы переключаетесь с интерфейса Pyplot в интерфейс OO, но некоторые коды на основе Pyplot включают, например, бессмысленные AX.GCA ()
Что, по-видимому, скопировано из кода, основанного на OO без понимания. Использование PLT.GCF ()
или PLT.GCA ()
Не плохая вещь вообще, если один переключает интерфейс намеренно. Учитывая неявное переключение может быть причиной путаницы для начинающих, используя plt.subplots.
или fig.add_subplot
С самого начала была бы лучшая практика для большинства случаев, если они публично доступны.
Pyplot интерфейс
Это удобный стиль MATLAB-пользователя, в котором все сделано с приоритет ***
.
# https://matplotlib.org/tutorials/introductory/pyplot.html def f(t): return np.exp(-t) * np.cos(2*np.pi*t) t1 = np.arange(0.0, 5.0, 0.1) t2 = np.arange(0.0, 5.0, 0.02) plt.figure(1) plt.subplot(211) plt.plot(t1, f(t1), 'bo', t2, f(t2), 'k') plt.subplot(212) plt.plot(t2, np.cos(2*np.pi*t2), 'r--') plt.show()
Сначала это кажется очень простым, потому что нет необходимости думать о том, какие объекты вы обрабатываете. Вам нужно знать только, в каком «состоянии» вы находитесь, поэтому этот стиль также называется «Интерфейс состояния». Здесь «государство» означает, какой рисунок и субплата вы в настоящее время в. Как вы видите в Учебник Pyplot Это дает хорошую цифру, если ваш участок не такой сложный. Хотя интерфейс Pyplot предлагает множество функций для изменения настроек участка, вы можете достичь его предела в течение нескольких часов, дней, месяцев (или никогда, если вам повезет) в зависимости от того, что вы хотите сделать. На этом этапе вам нужно переключиться в интерфейс OO. Вот почему я рекомендую использовать интерфейс OO с самого начала. Но Pyplot все еще полезен для быстрой проверки или любых случаев, когда вам нужны грубые участки.
После гугула несколько раз вы заметите, что имеет иерархическую структуру, состоящую из чего-то часто называемого Рис
и топор
Отказ Старый Док для Matplotlib 1.5 Хорошее изображение объясняет это.
На самом деле, эти три компонента специальные Художник
s под названием “контейнеры” (и есть четвертый контейнер Галочка
) Что мы увидим позже. Эта иерархия делает простые примеры выше даже более четкими.
fig, ax = plt.subplots() # make Figure and Axes which belongs to 'fig'
fig = plt.figure() # make Figure ax = fig.add_subplot(1,1,1) # make Axes belonging to fig
Сделать дальнейший взгляд на атрибуты Рис
и топор
Помогает вам понять иерархию больше.
fig = plt.figure() ax = fig.add_subplot(1,1,1) # make a blank plotting area print('fig.axes:', fig.axes) print('ax.figure:', ax.figure) print('ax.xaxis:', ax.xaxis) print('ax.yaxis:', ax.yaxis) print('ax.xaxis.axes:', ax.xaxis.axes) print('ax.yaxis.axes:', ax.yaxis.axes) print('ax.xaxis.figure:', ax.xaxis.figure) print('ax.yaxis.figure:', ax.yaxis.figure) print('fig.xaxis:', fig.xaxis)
fig.axes: [] ax.figure: Figure(432x288) ax.xaxis: XAxis(54.000000,36.000000) ax.yaxis: YAxis(54.000000,36.000000) ax.xaxis.axes: AxesSubplot(0.125,0.125;0.775x0.755) ax.yaxis.axes: AxesSubplot(0.125,0.125;0.775x0.755) ax.xaxis.figure: Figure(432x288) ax.yaxis.figure: Figure(432x288) -------------------------------------------------------------------------------- AttributeError Traceback (most recent call last) in () 9 print('ax.xaxis.figure:', ax.xaxis.figure) 10 print('ax.yaxis.figure:', ax.yaxis.figure) --------> 11 print('fig.xaxis:', fig.xaxis) AttributeError: 'Figure' object has no attribute 'xaxis'
Из этих результатов мы можем ожидать следующих правил об иерархии Рисунок
, Оси
и Ось
Отказ
Рисунок
ЗнаетОси
Но неОсь
ОтказОси
ЗнаетРисунок
иОсь
оба.Ось
ЗнаетОси
иРисунок
оба.Рисунок
может содержать несколькоОси
потому чтоfig.caxes
это списокОси
ОтказОси
может принадлежать только одномуРисунок
потому чтоax.figure
не список.Оси
может иметь одинXaxis
иYaxis
соответственно для подобных причин.Xaxis
иYaxis
может принадлежать одномуОси
и, соответственно, одинокийРисунок
Отказ
Вместо того, чтобы фигура, объясняющая иерархическую структуру, Руководство по использованию В текущем документе есть «анатомия фигуры» 2 Объясняя все компоненты на фигуре, которая также является информативной 3 Отказ
От линий и точек, которые представляют данные для незначительных клещей и текстовых меток для них на оси x, каждый отдельный компонент на рисунке является Художник
объект 4 Отказ Есть два типа Художник
, контейнеры и примитивы. Как я писал в предыдущем разделе, три компонента в иерархии Matplotlib, Рисунок
, Оси
и Ось
Контейнеры, которые могут содержать более низкие контейнеры и несколько примитивов, такие как Line2d
сделано ax.plot
, PathCollection
по AX.SCatter
или Текст
по топор .annotate
. Даже линии тик и ярлыки на самом деле Line2d
и Текст
которые принадлежат четвертому контейнеру Галочка
Отказ
Контейнеры имеют много «ящиков» (списков Python, Ecilections) для каждого типа примитивов. Например, Оси
Объект, топор
только после экскалирования имеет пустой список AX.LINES.
. Часто используемая команда ax.plot
Добавляет Line2d
Объект в списке и работает другие сопровождающие настройки.
x = np.linspace(0, 2*np.pi, 100) fig = plt.figure() ax = fig.add_subplot(1,1,1) print('ax.lines before plot:\n', ax.lines) # empty line1, = ax.plot(x, np.sin(x), label='1st plot') # add Line2D in ax.lines print('ax.lines after 1st plot:\n', ax.lines) line2, = ax.plot(x, np.sin(x+np.pi/8), label='2nd plot') # add another Line2D print('ax.lines after 2nd plot:\n', ax.lines) ax.legend() print('line1:', line1) print('line2:', line2)
ax.lines before plot: [] ax.lines after 1st plot: [] ax.lines after 2nd plot: [ , ] line1: Line2D(1st plot) line2: Line2D(2nd plot)
Следующие разделы суммируют четыре контейнера. Столы копируются из Учебное пособие по художнику Отказ
Фигура
Список экземпляров осей (включает в себя subplot) | fig.caxes. |
Прямоугольник фон | fig.patch. |
Список патчей подходящих действий – полезно для необработанного дисплея пикселей | fig.images.images. |
Список экземпляров легенды фигуры (отличается от осей.legends) | fig.legends. |
Список рисунок Line2D экземпляров (редко используется, см. AXES.LINES) | Рис |
Список фигурных патчей (редко используется, см. AXES.Patches) | fig.patches. |
Текстовые экземпляры текста списка | fig.texts. |
Атрибуты с множественным названием являются списки и те, которые с единственным именем представляют собой один объект. Стоит отметить, что Художник
принадлежащий к Рисунок
использовать Рисунок
координировать по умолчанию. Это может быть преобразовано в Оси
или координаты данных Используя Трансформирует
, который находится за пределами объема этого поста.
fig.legend и ax.legend.
fig.legends
Добавлено «коробка» для легендов Рис метод
. Вы можете подумать: «Что это за? У нас есть AX.LEGEND Отказ «Разница представляет собой объем каждого метода. В то время как
AX.LEGEND только собирает этикетки от
Художник принадлежащий к
топор ,
fig.legend собирает этикетки от всех
Оси под
Инжир . Это полезно, например, когда вы делаете сюжет, используя
ax.twinx Отказ Просто использую
AX.LEGEND Дважды делает две легенды, которые не желательны в целом.
x = np.linspace(0, 2*np.pi, 100) fig = plt.figure() ax = fig.add_subplot(111) ax.plot(x, np.sin(x), label='sin(x)') ax1 = ax.twinx() ax1.plot(x, 2*np.cos(x), c='C1', label='2*cos(x)') # cf. 'CN' notation # https://matplotlib.org/tutorials/colors/colors.html#cn-color-selection ax.legend() ax1.legend()
Известный рецепт, чтобы поставить их вместе состоит в том, чтобы объединить обработчики легенды и этикетки обоих Оси
Отказ
# Executing this part in a different notebook cell shows an updated figure. handler, label = ax.get_legend_handles_labels() handler1, label1 = ax1.get_legend_handles_labels() ax.legend(handler+handler1, label+label1, loc='upper center', title='ax.legend') # Legend made by ax1.legend remains fig
Это можно легко сделать по fig.legend
Без аргументов, которые были введены в Вер 2.1 5 Отказ По умолчанию позиция указывается с Рисунок
Координата, которая не полезна, когда вы хотите поставить его в рамку построения. Вы можете изменить его в Оси
Координация с bbox_transform
ключевое слово.
fig.legend(loc='upper right', bbox_to_anchor=(1,1), bbox_transform=ax.transAxes, title='fig.legend\nax.transAxes') fig
Оси
Matplotlib.axes. Оси – центр вселенной MATPLOTLIB
Это цитата из Учебное пособие по художнику Отказ Это очень верно, потому что важные части визуализации данных в Matplotlib все происходят из Оси
методы.
Список экземпляров художников | Ax.artists. |
Экземпляр прямоугольника для фона осей | ax.patch. |
Список экземпляров сбора | ax.collections. |
Список AXESIMAGE | AX.Images.images. |
Список экземпляров легенды | AX.LEGENDS. |
Список экземпляров Line2D | AX.LINES. |
Список экземпляров патча | AX.Patches. |
Список текстовых экземпляров | ax.texts. |
matplotlib.axis. Экземпляр xaxis. | ax.xaxis. |
matplotlib.axis. Yaxis экземпляр | ax.yaxis. |
Часто используемые команды, такие как ax.plot
и AX.SCatter
называются «помощника методов», которые добавляют соответствующие Художник
s в соответствующих контейнерах и выполнять другие разные рабочие места.
Аннотизировать | ax.texts. | топор .annotate |
Прямоугольник | AX.Patches. | ax.bar |
Line2d & прямоугольник | ax.lines & ax.patches. | AX.ERRORBAR |
Полигон | AX.Patches. | ax.fill. |
Прямоугольник | AX.Patches. | ax.hist. |
AxesImage. | AX.Images.images. | ax.imshow. |
Легенда | AX.LEGENDS. | ax.legend. |
Line2d. | AX.LINES. | ax.plot. |
PathCollection | ax.collections. | топор |
Текст | ax.texts. | AX.Text.Text. |
В этом примере показано ax.plot
и AX.SCatter
Добавить Line2d
и PathCollection
Объекты в соответствующих списках.
x = np.linspace(0, 2*np.pi, 100) fig = plt.figure() ax = fig.add_subplot(1,1,1) print('ax.lines before plot:\n', ax.lines) # empty Axes.lines line1, = ax.plot(x, np.sin(x), label='1st plot') # add Line2D in Axes.lines print('ax.lines after 1st plot:\n', ax.lines) line2, = ax.plot(x, np.sin(x+np.pi/8), label='2nd plot') # add another Line2D print('ax.lines after 2nd plot:\n', ax.lines) print('ax.collections before scatter:\n', ax.collections) scat = ax.scatter(x, np.random.rand(len(x)), label='scatter') # add PathCollection in Axes.collections print('ax.collections after scatter:\n', ax.collections) ax.legend() print('line1:', line1) print('line2:', line2) print('scat:', scat) ax.set_xlabel('x value') ax.set_ylabel('y value')
ax.lines before plot: [] ax.lines after 1st plot: [] ax.lines after 2nd plot: [ , ] ax.collections before scatter: [] ax.collections after scatter: [ ] line1: Line2D(1st plot) line2: Line2D(2nd plot) scat:
Повторное повторное повторное объект не рекомендуется
Знание того, что построенные объекты содержатся в списках, вы, вероятно, придумаете идею повторно использовать эти объекты в AXES.LINES
Применив его к другому AXES.LINES
Список для быстрой построения. Учебное пособие по художнику Очевидно, что это не рекомендуется, потому что методы помощника делают много других, кроме создания Художник
Отказ Быстрый тест говорит, что это не хорошая идея.
x = np.linspace(0, 2*np.pi, 100) fig = plt.figure() ax1 = fig.add_subplot(2,1,1) # upper subplot line, = ax1.plot(x, np.sin(x), label='ax1 line') # create a Line2D object ax1.legend() ax2 = fig.add_subplot(2,1,2) # lower subplot ax2.lines.append(line) # try to reuse same `Line2D` object in another `Axes`
Даже add_line
Метод не работает.
ax2.add_line(line)
ValueError: Can not reset the axes. You are probably trying to re-use an artist in more than one Axes which is not supported
Это сообщение об ошибке указывает, что Художник
, контейнер или примитив, не могут содержаться в нескольких контейнерах, что согласуется с тем, что каждый Художник
Удерживает родительский контейнер как голый объект, а не в списке.
print('fig:', id(fig)) print('ax1:', id(ax1)) print('line.fig:', id(line.figure)) print('line.axes:', id(line.axes))
fig: 4707121584 ax1: 4707121136 line.fig: 4707121584 line.axes: 4707121136
Может быть возможен, если вы будете делать все необходимые вещи в правильном пути, но это далеко не первая идея, чтобы просто добавить объект в список и достаточно причина не делать этого.
Ось
В то время как Ось
, появился как Xaxis
или Yaxis
только содержит Художник
Связанные с клещами и этикетками, это часто требует некоторых густочек для незначительных настроек, иногда в течение часа. Я надеюсь, что этот раздел поможет вам быстро сделать работу.
Как Учебное пособие по художнику Нет стола, как другие контейнеры, я сделал аналогичную таблицу.
Текстовый экземпляр для метки оси | Axis.label |
Список галочек для основных клещей. | Axis.majorticks. |
Список галочек экземпляров для незначительных клещей. | Axis.minorticks. |
Мы использовали AX.SET_XLABEL
и AX.SET_YLABEL
В примере для Оси
контейнер. Вы можете подумать, что эти методы изменяют этикетку X и Y Оси
экземпляр ( топор
), но на самом деле они меняются этикетка
атрибуты Xaxis
и Yaxis
, ax.xaxis.label
и AX.yaxis.label
, соответственно.
xax = ax.xaxis print('xax.label:', xax.label) print('xax.majorTicks:\n', xax.majorTicks) # seven major ticks (from 0 to 6) and two invisible ticks locating outside of the figure print('xax.minorTicks:\n', xax.minorTicks) # two ticks outside the figure
xax.label: Text(0.5,17.2,'x value') xax.majorTicks: [, , , , , , , , ] xax.minorTicks: [ , ]
AX.SET _ *** Методы являются специальными
Оси
имеет много “набор _ ** * «Помощные методы для изменения атрибутов и значений Ось
и Галочка
экземпляры. Они так удобны, что большая часть задач Matplotlib начинающих встречами может быть решена с некоторыми из них. Стоит отметить, что эти методы «множества _ ***» являются статическими. Изменения, сделанные с ними, не обновляются, когда что-то изменилось. Например, если вы измените X Ticks с помощью ax.set_xticks
Чтобы они выглядели красиво с первым сюжетом, а второй график превышает диапазон X первого сюжета, результат не похож на то, что должно быть.
x = np.linspace(0, 2*np.pi, 100) fig = plt.figure() ax = fig.add_subplot(1,1,1) line1, = ax.plot(x, np.sin(x), label='') # X range: 0 to 2pi ax.set_xticks([0, 0.5*np.pi, np.pi, 1.5*np.pi, 2*np.pi]) line2, = ax.plot(1.5*x, np.sin(x), label='') # X range: 0 to 3pi
Тикер делает это для вас
Если вы не измените параметры, связанные с тисками, с «множеством _ ***» методах, галочками и галочками, автоматически обновляются для каждого нового сюжета соответственно. Это делается по Тикер
, более конкретно, форматированный и локатор. Хотя они вполне важно для настроек, связанных с тиком, вы можете немного знать о них, если вы решили свои проблемы, скопировавшие и вставляющие переполнения стека, ответы 6 Отказ Посмотрим, что происходит в предыдущем примере.
xax = ax.xaxis yax = ax.yaxis print('xax.get_major_formatter()', xax.get_major_formatter()) print('yax.get_major_formatter()', yax.get_major_formatter()) print('xax.get_major_locator():', xax.get_major_locator()) print('yax.get_major_locator():', yax.get_major_locator())
xax.get_major_formatter()yax.get_major_formatter() xax.get_major_locator(): yax.get_major_locator():
Скальформформуртовать
Установлено как для осей X, так и Y, потому что это форма по умолчанию, и мы не изменили его. С другой стороны, пока по умолчанию Автолокатор
установлен для оси Y, ФИДЕНЦИАЛЬНЫЙ ФИДЕНЦИИ Установлен для оси x, которую мы изменили позиции галочек с помощью
ax.set_xticks. метод. Как вы можете себе представить из его имени,
ФИДЕНЦИАЛЬНЫЙ ФИДЕНЦИИ Исправлены положения тика и не обновляют их, даже если диапазон построения изменен.
Давайте изменим Тикер
В предыдущем примере вместо ax.set_xticks
Отказ
import matplotlib.ticker as ticker # this is required to used `Ticker` ax.xaxis.set_major_locator(ticker.MultipleLocator(0.5*np.pi)) # locate ticks at every 0.5*pi fig # display the figure again with new locator.
Как насчет формирования?
@ticker.FuncFormatter # FuncFormatter can be used as a decorator def major_formatter_radian(x, pos): return '{}$\pi$'.format(x/np.pi) # probably not the best way to show radian tick labels ax.xaxis.set_major_formatter(major_formatter_radian) fig
Ну, все еще может быть то, что вы хотели бы настроить, но я думаю, что это достаточно ясно.
Вы можете узнать больше в галерее Matplotlib. Галерея> ЦЕК ФОРМАТТЕЛИ Галерея> Машины локаторы
ключевое слово xunits для ax.plot
Для вашей информации ax.plot
есть ксунитс
ключевое слово, которое является не описано в доке на момент. Я никогда не пытался использовать эту опцию, но вы можете увидеть пример в Галерея> Радианки И узнать больше о matplotlib.units. ConversionInterface
здесь .
import numpy as np from basic_units import radians, degrees, cos from matplotlib.pyplot import figure, show x = [val*radians for val in np.arange(0, 15, 0.01)] fig = figure() fig.subplots_adjust(hspace=0.3) ax = fig.add_subplot(211) line1, = ax.plot(x, cos(x), xunits=radians) ax = fig.add_subplot(212) line2, = ax.plot(x, cos(x), xunits=degrees)
Галочка
Наконец, мы достигли внизу иерархии MatPlotlib. Галочка
Является небольшим контейнером в основном для короткой линии для самой галочки и текста для галочки.
Line2d экземпляр | Tick.tick1line. |
Line2d экземпляр | Tick.tick2line. |
Экземпляр Line2D для сетки | Tick.Gridline. |
Текстовый экземпляр | Tick.label1. |
Текстовый экземпляр | Tick.label2. |
логический, который определяет, стоит ли рисовать решетку | Tick.Gridon |
логиан, который определяет, нарисовать ли 1-й тиклин | Tick.tick1on. |
логический, который определяет, стоит ли нарисовать 2-й тиклайн | Tick.tick2on. |
логиан, который определяет, стоит ли рисовать 1-й ярлык | Tick.label1on. |
логиан, который определяет, стоит ли рисовать 2-й ярлык галочки | Tick.label2on. |
Как мы видим в Ось
С Галочка
также появляется как Xtick
или Ytick.
. 1-й и 2-й указывают, галочки на нижних и верхних сторонах для Xtick
и те, у левой и правой стороны для Ytick.
. Последние тики не видны по умолчанию.
xmajortick = ax.xaxis.get_major_ticks()[2] # tick at 0.5 pi in the previous figure print('xmajortick', xmajortick) print('xmajortick.tick1line', xmajortick.tick1line) print('xmajortick.tick2line', xmajortick.tick2line) print('xmajortick.gridline', xmajortick.gridline) print('xmajortick.label1', xmajortick.label1) print('xmajortick.label2', xmajortick.label2) print('xmajortick.gridOn', xmajortick.gridOn) print('xmajortick.tick1On', xmajortick.tick1On) print('xmajortick.tick2On', xmajortick.tick2On) print('xmajortick.label1On', xmajortick.label1On) print('xmajortick.label2On', xmajortick.label2On)
xmajortickxmajortick.tick1line Line2D((1.5708,0)) xmajortick.tick2line Line2D() xmajortick.gridline Line2D((0,0),(0,1)) xmajortick.label1 Text(1.5708,0,'0.5$\\pi$') xmajortick.label2 Text(0,1,'0.5$\\pi$') xmajortick.gridOn False xmajortick.tick1On True xmajortick.tick2On False xmajortick.label1On True xmajortick.label2On False
Нам вряд ли нужно обращаться Галочка
непосредственно благодаря многим способам помощника, Тикер
и AXES.TICK_PARAMS
Отказ
Взгляните на список параметров для стиля по умолчанию. Учебники> Настройка matplotlib> Образец matplotlibrc file Я думаю, теперь вы можете выяснить не только то, что является параметром, но и на каком Художник
Параметр имеет эффект на самом деле, который позволяет сэкономить время для Googling 7 Отказ Вы также можете настроить стиль по умолчанию, не делая файл MATPLOTLIBRC, просто набрав так, как это в начале кода.
plt.rcParams['lines.linewidth'] = 2
У некоторых из вас может быть отрицательное впечатление на док Matplotlib. Я согласен, что было трудно найти подходящий пример вашей проблемы из длинного списка. Но это было значительно улучшено с версии 2.1.0 8 Отказ Это очевидно, если вы сравните соответствующие страницы до и после улучшения.
Примеры MatPlotlib, галерея миниатюр | Галерея, учебники |
Обзор | Обзор |
Я рекомендую взглянуть на Последняя галерея и Учебник которые сейчас довольно аккуратно.
Спасибо за чтение. Наслаждайтесь построением с Matplotlib (и гугул) 📈🤗📊.
Обложка фото Caleb Salomons на Unsplash
Да, учебники всегда информативны и полезны, если вы недостаточно ленивы, чтобы прочитать их перед использованием. На самом деле, я мог бы попытаться прочитать документ о исполнителе, когда я начал записаться с Matplotlib несколько лет назад, но я уверен, что я думал: «Хорошо, это не для меня» в то время. (Может быть, это не текущее руководство.) ↩
Вот пример код для этой цифры https://matplotlib.org/gallery/showcase/anatomy.html. ↩
Конечно, есть и другие
Художник
s. Эта страница это хорошая запись для тех, кто хочет большую картину. Вы можете нажатьХудожник
имена для дальнейшего объяснения. ↩Технически говоря,
Художник
Нарисуйте свои красивые данные на холсте в Matplotlib. Какая прекрасная риторика. ↩fig.legend
не так полезно в качестве текущей версии, потому что она требовала легенды ручек и меток в соответствии с доктором для вершина 2.0.2 ↩Вы часто встречаете рецепты, используя их, когда вы настроили параметры, связанные с галочками, еще один шаг дальше от методов «Установить _ ***» и отказаться от их устранения для вашей собственной проблемы. (Да, это мне несколько месяцев назад.) ↩
Или вы можете копать глубже, используя сохраненное время, как я. ↩
Вот хороший читать, чтобы узнать, как трудно улучшить документ. Matplotlib ведет разработку, почему он не может исправить документы | Numfocus ↩
Оригинал: “https://dev.to/skotaro/artist-in-matplotlib—something-i-wanted-to-know-before-spending-tremendous-hours-on-googling-how-tos–31oo”