Графика на языке Python с matplotlib

Питон

matplotlib — это наиболее широко используемая научная библиотека построения графиков в Python.

  • Обычно используется суб-библиотека под названием matplotlib.pyplot.
  • Записная книжка Jupyter будет отображать графики встраиваемыми, если мы попросим ее использовать “волшебную” команду.

%matplotlibinline
importmatplotlib.pyplotкакplt

  • Обычные сюжеты (довольно) просты в создании.

time = [0, 1, 2, 3]
position = [0, 100, 200, 300]

plt.plot(time, position)
plt.xlabel(‘Время (hr)’)
plt.ylabel(‘Позиция (km)’)

Простой позиционно-временной график

Графика на языке Python с matplotlib

Отображение всех открытых фигур

В нашем примере JupyterNotebook с %matplotlibinline запуск ячейки генерирует фигуру непосредственно под кодом. Рисунок также включен в документ блокнота для дальнейшего просмотра. Однако другие среды Python требуют дополнительной команды для отображения рисунка.

Проинструктируйте matplotlib, чтобы показать фигуру:

plt.show()

Эта команда также может быть использована в Записной книжке — например, для отображения нескольких фигур, если несколько созданы одной ячейкой.

Построение графика данных непосредственно из фрейма данных Pandas

  • Мы также можем построить фреймы данных панд.
  • Он неявно использует matplotlib.pyplot.
  • Перед построением графика мы преобразуем заголовки столбцов из строкового типа данных в целочисленный, так как они представляют собой числовые значения

import pandas as pd

data = pd.read_csv(‘data/gapminder_gdp_oceania.csv’, index_col=’страна’)

Извлечь год из последних 4 символов имени каждого столбца. Текущие имена столбцов структурированы как » gdpPercap_(year)»., таким образом, мы хотим сохранить часть (год) только для ясности при построении графика ВВП по сравнению с годами. Для этого мы используем strip(), который удаляет из строки символы, указанные в аргументе. Этот метод работает со строками, поэтому мы вызываем str перед strip()

years = data.columns.str.strip(‘gdpPercap_’)

Преобразование значений года в целые числа, сохранение результатов обратно в фрейм данных.

data.columns = years.astype(int)

data.loc[‘Австралия’].plot()

График ВВП Австралии

Графика на языке Python с matplotlib

Выберите и преобразуйте данные, а затем постройте график.

  • По умолчанию DataFrame.plot строит графики со строками в качестве оси X.
  • Мы можем транспонировать данные, чтобы построить несколько рядов.

data.T.plot()
plt.ylabel(‘ВВП на душу населения’)

График ВВП Австралии и Новой Зеландии

Графика на языке Python с matplotlib

Доступно множество стилей сюжета. Например, сделайте гистограмму, используя более причудливый стиль.

plt.style.use(‘ggplot’)
data.T.plot(kind=’bar’)
plt.ylabel(‘ВВП на душу населения’)

Барплот ВВП Австралии

Графика на языке Python с matplotlib

Данные также могут быть построены путем прямого вызова функции matplotlibplot.

  • Команда plt.plot(x, y)
  • Цвет и формат маркеров также могут быть заданы в качестве дополнительного необязательного аргумента, например, b — синяя линия, g-зеленая пунктирная линия.

Получение данных Австралии из dataframe

years = data.columns
gdp_australia = data.loc[‘Австралия’]

plt.plot(years, gdp_australia, ‘g—‘)

Форматированный график ВВП для Австралии

Графика на языке Python с matplotlib

Можно построить множество наборов данных вместе.

  • Выберите данные по двум странам.

gdp_australia = data.loc[‘Австралия’]
gdp_nz = data.loc[‘Новая Зеландия’]

  • Участок с разноцветными маркерами.

plt.plot(years, gdp_australia, ‘b-‘, label=’Australia’)
plt.plot(years, gdp_nz, ‘g-‘, label=’New Zealand’)

  • СоздайтеLegend.

plt.legend(loc=’верхний левый’)
plt.xlabel(‘Год’)
plt.ylabel(‘ВВП на душу населения ($)’)

Добавление Legend

Часто при построении нескольких наборов данных на одном и том же рисунке желательно иметь легенду, описывающую данные. Это можно сделать в matplotlib в два этапа:

  • Предоставьте метку для каждого набора данных на рисунке:

plt.plot(years, gdp_australia, label=’Australia’)
plt.plot(years, gdp_nz, label=’New Zealand’)

  • Проинструктируйте matplotlib,чтобы создать легенду.

plt.legend()

По умолчанию matplotlib попытается поместить легенду в подходящее положение. Если вы предпочитаете указать позицию, это можно сделать с помощью аргумента loc=, например, чтобы поместить легенду в верхний левый угол графика, укажите loc=’верхний левый’

Форматированный график ВВП для Австралии и Новой Зеландии

Графика на языке Python с matplotlib

  • Постройте точечную диаграмму корреляции ВВП Австралии и Новой Зеландии
  • Используйте либо plt.scatter, либо DataFrame.plot.scatter

plt.scatter(gdp_australia, gdp_nz)

Корреляция ВВП с использованием plt.scatter

Графика на языке Python с matplotlib

data.T.plot.scatter(x = ‘Австралия’, y = ‘Новая Зеландия’)

Графика на языке Python с matplotlib

Минимумы и максимумы

Заполните пробелы ниже, чтобы построить график минимального ВВП на душу населения с течением времени для всех стран Европы. Измените его еще раз, чтобы построить график максимального ВВП на душу населения в Европе с течением времени.

data_europe = pd.read_csv(‘data/gapminder_gdp_europe.csv’, index_col=’country’)
data_europe.___.plot(label=’min’)
data_europe.___
plt.legend(loc=’best’)
plt.xticks(вращение=90)

Решение

data_europe = pd.read_csv(‘data/gapminder_gdp_europe.csv’, index_col=’country’)
data_europe.min().plot(label=’min’)
data_europe.max().plot(label=’max’)
plt.legend(loc=’best’)
plt.xticks(rotation=90)

Графика на языке Python с matplotlib

Корреляции

Измените пример в примечаниях, чтобы создать точечную диаграмму, показывающую взаимосвязь между минимальным и максимальным ВВП на душу населения среди стран Азии за каждый год в наборе данных. Какие отношения вы видите (если они есть)?

data_asia = pd.read_csv(‘data/gapminder_gdp_asia.csv’, index_col=’country’)
data_asia.describe().T.plot(kind=’scatter’, x=’min’, y=’max’)

Решение

Графика на языке Python с matplotlib

Никаких особых корреляций между минимальными и максимальными значениями ВВП из года в год не наблюдается. Похоже, судьбы азиатских стран не растут и не падают вместе.

Вы можете заметить, что вариабельность максимума намного выше, чем вариабельность минимума. Взгляните на максимальные и максимальные индексы:

data_asia = pd.read_csv(‘data/gapminder_gdp_asia.csv’, index_col=’country’) data_asia
.max().plot()
print(data_asia.idxmax())
print(data_asia.idxmin())

Решение

Графика на языке Python с matplotlib

Больше корреляций

Эта короткая программа создает график, показывающий корреляцию между ВВП и ожидаемой продолжительностью жизни в 2007 году, нормализуя размер маркера по населению:

data_all = pd.read_csv(‘data/gapminder_all.csv’, index_col=’country’)
data_all.plot(kind=’scatter’, x=’gdpPercap_2007′, y=’lifeExp_2007′,
s=data_all[‘pop_2007’]/1e6)

Используя онлайн — справку и другие ресурсы, объясните, что делает каждый аргумент для построения графика.

Решение

Графика на языке Python с matplotlib

Сохранение вашего сюжета в файл

Если вы удовлетворены сюжетом, который видите, вы можете сохранить его в файл, возможно, включить в публикацию. В модуле matplotlib.pyplot есть функция, которая выполняет эту задачу: savefig. Вызов этой функции, например, с помощью:

plt.savefig(‘my_figure.png’)

Эта команда сохранит текущую цифру в файл my_figure.png. Формат файла будет автоматически выведен из расширения имени файла (другие форматы — pdf, ps, eps и svg).

Обратите внимание, что функции в plt ссылаются на глобальную переменную figure, и после отображения фигуры на экране (например, с помощью plt.show) matplotlib заставит эту переменную ссылаться на новую пустую фигуру. Поэтому обязательно вызовите plt.savefig перед отображением графика на экране, иначе вы можете найти файл с пустым графиком.

При использовании фреймов данных данные часто генерируются и выводятся на экран в одну строку, и plt.savefig, по-видимому, не является возможным подходом. Одна из возможностей сохранить рисунок в файл заключается в следующем:

  • сохраняет ссылку на текущую цифру в локальной переменной (с помощью plt.gcf)
  • вызывает метод класса savefig из этой переменной.

fig = plt.gcf() # get current figure
data.plot(kind=’bar’)
fig.savefig(‘my_figure.png’)

Сделайте ваши сюжеты доступными

Всякий раз, когда вы создаете сюжеты для статьи или презентации, есть несколько вещей, которые вы можете сделать, чтобы убедиться, что все могут понять ваши сюжеты. Всегда следите за тем, чтобы ваш текст был достаточно большим для чтения. Используйте параметр fontsize в xlabel, ylabel, title и legend, а также tick_params с labelsize, чтобы увеличить размер текста чисел на ваших осях.

Точно так же вы должны сделать так, чтобы элементы вашего графика были легко видны. Используйте s, чтобы увеличить размер маркеров диаграммы рассеяния, и linewidth, чтобы увеличить размеры линий графика.

Использование цвета (и ничего больше) для различения различных элементов сюжета сделает ваши сюжеты нечитаемыми для тех, кто дальтоник или у кого есть черно-белый офисный принтер. Для линий параметр linestyle позволяет использовать различные типы линий. Для диаграмм рассеяния маркер позволяет изменять форму точек. Если вы не уверены в своих цветах, вы можете использовать Coblis или ColorOracle, чтобы смоделировать, как ваши графики будут выглядеть для тех, кто страдает дальтонизмом.

Ключевые моменты

  • Постройте график данных непосредственно из фрейма данных Pandas.
  • Выберите и преобразуйте данные, а затем постройте график.
  • Доступно множество стилей построения графиков: дополнительные параметры см. в галерее графиков Python.
  • Можно построить множество наборов данных вместе.
Оцените статью
Образовательный портал WELCOME4U.RU
Добавить комментарий

Adblock
detector