В этом посте вы узнаете, как создавать диаграммы рассеяния Matplotlib, включая добавление нескольких цветов, добавление заголовков и меток осей, изменение размера маркеров, добавление легенд и настройку с помощью стилей Matplotlib.
Содержание
Загружаем наши данные
Для этого урока мы будем использовать Pandas и Matplotlib. Также давайте импортируем набор данных от Five Thirty Eight по очкам WNBA, который
В наборе данных довольно много информации, и заголовки не самые понятные, поэтому нам придется немного их очистить.
ID Year Age Team Minutes Composite_Rating Wins
0 montgre01w 2019 32 Atlanta 949 -2.4 1.22
1 williel01w 2019 26 Atlanta 909 0.6 2.51
2 sykesbr01w 2019 25 Atlanta 880 -3.4 0.70
3 hayesti01w 2019 29 Atlanta 817 -1.5 1.45
4 brelaje01w 2019 31 Atlanta 767 -0.8 1.62
Как создать диаграммы рассеяния Matplotlib?
Matplotlib использует функцию .scatter() для создания диаграмм рассеяния. Вы можете использовать аргументы x= и y= для передачи данных, а аргумент marker= для установки типа маркера.
Как добавить заголовки и метки осей в диаграммы рассеяния Matplotlib?
Добавление заголовков и меток осей к диаграммам рассеяния в Matplotlib может быть выполнено с помощью функций .title(), .xlabel() и .ylabel(). Давайте добавим некоторые описательные заголовки к нашему графику:
plt.scatter(x=df['Minutes'], y=df['Wins'],marker='o')
plt.title('Minutes played vs. Games Won')
plt.xlabel('Minutes Played')
plt.ylabel('Games Won')
plt.show()
Это возвращает следующий график:
Мы можем изменить размер шрифта заголовка и меток осей, передав аргумент fontsize= в соответствующие функции.
Let’s try changing the titles to make it a little prettier:
plt.scatter(x=df['Minutes'], y=df['Wins'],marker='o')
plt.title('Minutes played vs. Games Won', fontsize=18)
plt.xlabel('Minutes Played', fontsize=12)
plt.ylabel('Games Won', fontsize=12)
plt.show()
Это возвращает следующее изображение:
Как настроить цвета разбросанных маркеров?
Добавление цвета на диаграмму рассеяния может быть отличным способом добавить еще одно измерение к вашим данным. Например, при использовании одного цвета на графике невозможно определить, какая команда какая. Следовательно, невозможно увидеть, существуют ли какие-либо необычные тенденции, связанные с одной командой по сравнению с другой.
Давайте изменим цвет команд, чтобы различать их:
atlanta = df[df['Team']=='Atlanta']
chicago = df[df['Team']=='Chicago']
plt.scatter(x=atlanta['Minutes'], y=atlanta['Wins'],marker='o', c='cornflowerblue')
plt.scatter(x=chicago['Minutes'], y=chicago['Wins'],marker='o', c='hotpink')
plt.title('Minutes played vs. Games Won', fontsize=18)
plt.xlabel('Minutes Played', fontsize=12)
plt.ylabel('Games Won', fontsize=12)
plt.show()
Чтобы увидеть, какие еще цвета доступны, ознакомьтесь с официальной документацией, так как она довольно исчерпывающая.
Как изменить прозрачность маркера?
В данный момент маркеры накладываются друг на друга, и невозможно увидеть, что находится под ними. Это можно исправить, добавив прозрачность маркерам. Мы можем сделать это с помощью параметра alpha= в функции
Давайте установим прозрачность на уровне 0.6, что соответствует 60%:
plt.scatter(x=atlanta['Minutes'], y=atlanta['Wins'],marker='o', c='cornflowerblue', alpha=0.6)
plt.scatter(x=chicago['Minutes'], y=chicago['Wins'],marker='o', c='hotpink', alpha=0.6)
plt.title('Minutes played vs. Games Won', fontsize=18)
plt.xlabel('Minutes Played', fontsize=12)
plt.ylabel('Games Won', fontsize=12)
plt.show()
Это возвращает следующую диаграмму:
Как добавить легенду в диаграммы рассеяния Matplotlib?
Добавление цвета по умолчанию не позволяет отличить каждую команду. Мы можем добавить легенду, используя параметр label= в функции scatter(), а затем добавив .legend(True).
По умолчанию Matplotlib попытается определить наилучшее место для легенды.
Давайте попробуем это в Python:
plt.scatter(x=atlanta['Minutes'], y=atlanta['Wins'],marker='o', c='cornflowerblue', alpha=0.6, label='Atlanta')
plt.scatter(x=chicago['Minutes'], y=chicago['Wins'],marker='o', c='hotpink', alpha=0.6, label='Chicago')
plt.title('Minutes played vs. Games Won', fontsize=18)
plt.xlabel('Minutes Played', fontsize=12)
plt.ylabel('Games Won', fontsize=12)
plt.legend()
plt.show()
Этот код возвращает следующий график:
Если мы захотим изменить место расположения на что-то конкретное, мы можем передать аргумент loc= в функцию .legend(). Давайте изменим его на нижний угол.
plt.scatter(x=atlanta['Minutes'], y=atlanta['Wins'],marker='o', c='cornflowerblue', alpha=0.6, label='Atlanta')
plt.scatter(x=chicago['Minutes'], y=chicago['Wins'],marker='o', c='hotpink', alpha=0.6, label='Chicago')
plt.title('Minutes played vs. Games Won', fontsize=18)
plt.xlabel('Minutes Played', fontsize=12)
plt.ylabel('Games Won', fontsize=12)
plt.legend(loc='lower right')
plt.show()
Это возвращает следующий график:
Как добавить сетку на диаграммы?
С таким количеством пустого пространства может быть сложно определить, где именно размещены значения. По этой причине полезно добавить сетку на график. В Matplotlib вы можете сделать это, добавив функцию .grid(True) к объекту plt.
Давайте попробуем:
plt.scatter(x=atlanta['Minutes'], y=atlanta['Wins'],marker='o', c='cornflowerblue', alpha=0.6, label='Atlanta')
plt.scatter(x=chicago['Minutes'], y=chicago['Wins'],marker='o', c='hotpink', alpha=0.6, label='Chicago')
plt.title('Minutes played vs. Games Won', fontsize=18)
plt.xlabel('Minutes Played', fontsize=12)
plt.ylabel('Games Won', fontsize=12)
plt.legend(loc='lower right')
plt.grid(True)
plt.show()
Этот код возвращает следующий график:
Как изменить размер маркера в диаграммах рассеяния Matplotlib?
Так же, как добавление цвета на график добавляет еще одно измерение, мы можем добавить еще один уровень детализации, изменяя размер маркера для каждой точки данных на основе другой серии данных.
Для этого мы будем использовать столбец Composite Rating для изменения размера каждой точки.
Изменим параметр s= (размер) в функции .scatter()
plt.scatter(x=atlanta['Minutes'], y=atlanta['Wins'],marker='o', c='cornflowerblue', alpha=0.6, label='Atlanta', s=atlanta['Composite_Rating'])
plt.scatter(x=chicago['Minutes'], y=chicago['Wins'],marker='o', c='hotpink', alpha=0.6, label='Chicago', s=chicago['Composite_Rating'])
plt.title('Minutes played vs. Games Won', fontsize=18)
plt.xlabel('Minutes Played', fontsize=12)
plt.ylabel('Games Won', fontsize=12)
plt.legend(loc='lower right')
plt.grid(True)
plt.show()
Он возвращает следующий график:
Мы можем видеть, что все участки довольно маленькие. Мы можем умножить каждое значение на 10, чтобы увеличить его размер.
plt.scatter(x=atlanta['Minutes'], y=atlanta['Wins'],marker='o', c='cornflowerblue', alpha=0.6, label='Atlanta', s=atlanta['Composite_Rating']*10)
plt.scatter(x=chicago['Minutes'], y=chicago['Wins'],marker='o', c='hotpink', alpha=0.6, label='Chicago', s=chicago['Composite_Rating']*10)
plt.title('Minutes played vs. Games Won', fontsize=18)
plt.xlabel('Minutes Played', fontsize=12)
plt.ylabel('Games Won', fontsize=12)
plt.legend(loc='lower right')
plt.grid(True)
plt.show()
Этот код возвращает следующий, гораздо более разборчивый график:
Как добавить стиль к диаграммам Matplotlib?
Мы можем изменить стили в Matplotlib, используя функцию .style.use(), передавая имя стиля в качестве аргумента в функцию use.
Если вы хотите узнать, какие стили доступны, вы можете выполнить print(plt.style.available), что вернет следующий список:
В этом посте вы узнали, как создавать диаграммы рассеяния с помощью Matplotlib, включая добавление нескольких цветов, добавление заголовков и меток осей, изменение размера маркеров, добавление легенд и настройку с помощью стилей Matplotlib.
Мы разделили этот датафрейм на две разные команды. Это сделано для того, чтобы график каждого датафрейма можно было назначить одному цвету и затем наложить его на другой. Это не самый удобный способ, и, конечно, не такой упрощённый, как
Чтобы увидеть все доступные стили, вы можете ознакомиться