Рубрики
Без рубрики

«Художник» в Матплотлиб – то, чего я хотел знать, прежде чем тратить огромные часы на гуглами, как.

Вещи, чтобы знать, прежде чем погрузиться в переполнение стека. Помечено с Python, Matplotlib, Dataviz, Datascity.

Это правда, что 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)
xmajortick 
xmajortick.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

  1. Да, учебники всегда информативны и полезны, если вы недостаточно ленивы, чтобы прочитать их перед использованием. На самом деле, я мог бы попытаться прочитать документ о исполнителе, когда я начал записаться с Matplotlib несколько лет назад, но я уверен, что я думал: «Хорошо, это не для меня» в то время. (Может быть, это не текущее руководство.) ↩

  2. Вот пример код для этой цифры https://matplotlib.org/gallery/showcase/anatomy.html.

  3. Конечно, есть и другие Художник s. Эта страница это хорошая запись для тех, кто хочет большую картину. Вы можете нажать Художник имена для дальнейшего объяснения. ↩

  4. Технически говоря, Художник Нарисуйте свои красивые данные на холсте в Matplotlib. Какая прекрасная риторика. ↩

  5. fig.legend не так полезно в качестве текущей версии, потому что она требовала легенды ручек и меток в соответствии с доктором для вершина 2.0.2

  6. Вы часто встречаете рецепты, используя их, когда вы настроили параметры, связанные с галочками, еще один шаг дальше от методов «Установить _ ***» и отказаться от их устранения для вашей собственной проблемы. (Да, это мне несколько месяцев назад.) ↩

  7. Или вы можете копать глубже, используя сохраненное время, как я. ↩

  8. Вот хороший читать, чтобы узнать, как трудно улучшить документ. Matplotlib ведет разработку, почему он не может исправить документы | Numfocus

Оригинал: “https://dev.to/skotaro/artist-in-matplotlib—something-i-wanted-to-know-before-spending-tremendous-hours-on-googling-how-tos–31oo”