Библиотека визуализации Python — сводка использования Matplotlib

Python

После анализа данных иногда необходимо сразу отобразить результаты анализа.В настоящее время инструменты визуализации Python неотделимы друг от друга.Matplotlib — это инструмент 2D-рисования на Python и базовый пакет Seaborn, еще один инструмент рисования.

Сначала суммируйте шаги по рисованию подграфа:

1. Определите форму графика, который необходимо нарисовать (например, линейный график/гистограмма/столбцовый график/круговая диаграмма/точечная диаграмма и т. д.).
2. Заполните данные оси x/y
3. Настройка графических деталей (здесь можно выполнить множество настроек, таких как описание параметров текста по оси x/y, цвет/толщина линии/толщина столбца, угол наклона текста по оси x/y и т. д.)
4. Отобразить изображение (вызов show())

Обобщите шаги для одновременного рисования нескольких подграфиков в следующей области.

1. Определите размер области рисования
2. Определите положение каждого подграфика в области рисования.
3. Нарисуйте каждый подграф (этапы указаны выше)
4. Отобразить изображение (вызов show())

нарисовать линейную диаграмму

Спрос: на основе данных о безработице в США нарисуйте линейный график уровня безработицы в 1948 году за 12 месяцев, где ось X представляет месяц, а ось Y представляет уровень безработицы.

Данные следующие

       DATE  VALUE
0  1948-01-01    3.4
1  1948-02-01    3.8
2  1948-03-01    4.0
3  1948-04-01    3.9
4  1948-05-01    3.5
5  1948-06-01    3.6
6  1948-07-01    3.6
7  1948-08-01    3.9
8  1948-09-01    3.8
9  1948-10-01    3.7
10 1948-11-01    3.8
11 1948-12-01    4.0скопировать код

unrate.csv
код выше

#导包
import pandas as pd
import matplotlib.pyplot as plt

# 读取本地的csv文件,里面的数据为美国失业率数据,得到的数据为DataFrame类型
unrate = pd.read_csv('unrate.csv')

# 使用pd中的pd.to_datetime函数将DATE列的字符串类型数据转换成pd中的标准时间格式
unrate['DATE'] = pd.to_datetime(unrate['DATE'])

# 取出前面12条样本数据
first_twelve = unrate[0:12]

# 填充数据并绘制折线图,第一个参数为x轴数据,第二个参数为y轴数据
plt.plot(first_twelve['DATE'], first_twelve['VALUE'])

# 将x轴下面文字旋转90度
plt.xticks(rotation=90)

# 设置x轴的标签
plt.xlabel('Month')

# 设置y轴的标签
plt.ylabel('Unemployment Rate')

# 设置图标名称
plt.title('Monthly Unemployment Trends, 1948')

# 显示图像
plt.show()скопировать код

Изображение такое, как показано:

Нарисуйте несколько подзаговоров в одной области

Иногда необходимо отобразить несколько изображений в одной области для удобства сравнения.

Над кодом:

# 导包
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# 确定总绘图区宽和高分别为都是3x6
fig = plt.figure(figsize=(3, 6))

# 添加第一个子图,并且确定在总绘图区域的位置,add_subpolt(2,1,1),前两个参数参数2,1表示将总绘图区域划分为两行1列(跟矩阵表示很像)
# 第3个参数表示该子图占总区域的第一个位置.注(将总区域分成2行1列后,位置顺序从上到下,从左到右,从1开始递增)
ax1 = fig.add_subplot(2,1,1)
ax2 = fig.add_subplot(2,1,2)

# 绘制子图
ax1.plot(np.random.randint(1,5,5), np.arange(5))
ax2.plot(np.arange(10)*3, np.arange(10))

# 显示图像
plt.show()скопировать код

изображение, как показано

Нарисуйте несколько кривых одновременно на одном графике

Спрос: На этом же графике одновременно отображается уровень безработицы с 1948 по 1952 год, причем кривые выделены разным цветом.

код выше

#绘制5年内的失业率曲线图

#导包
import numpy as np
import pandas as pd
import matplotlib.pypolt as plt

# 读取本地数据
unrate=pd.read_csv('UNRATE.csv')

# 将字符串时间转换成pd中的时间格式
unrate['DATE']=pd.to_datetime(unrate['DATE'])

# 将年份时间转换成月份时间,并新建列存起来,因为需求需要将5年内的当年12个月内的失业率展示出来,此时再用年时间作为x轴下标就不合适了
unrate['MONTH']=unrate['DATE'].dt.month

# 设置5个颜色数组,分别表示5条曲线颜色
colors=['red','green','blue','black','yellow']

# 设置总绘图区域大小,需要在调用绘图函数之前调用才有效果
plt.figure(figsize=(10,6))   

#遍历5次
for i in range(5):
    

    #取出当年12个月的数据     
    data12=unrate[12*i:12*(i+1)]
    
    #x轴数据
    data_x=data12['MONTH']
    
    #y轴数据
    data_y=data12['VALUE']
    
    #当年的曲线的标签
    label=str(1948+i)
        
    # 绘制当年的曲线图
    plt.plot(data_x,data_y,c=colors[i],label=label)

    
# 设置x轴标签
plt.xlabel('MONTH')

# 设置y轴标签
plt.ylabel('unrate')

# 设置图标名称
plt.title('US-unrae,1948-1952')

# 设置曲线标签说明,loc='best'表示自己选择合适的位置来摆放
plt.legend(loc='best')

# 显示图像
plt.show()скопировать код

Результирующее изображение:

нарисовать гистограмму

Отличие гистограммы от гистограммы: из-за непрерывности сгруппированных данных прямоугольники в гистограмме обычно располагаются непрерывно, а гистограмма располагается отдельно. Кроме того, высота гистограммы представляет количество данных в каждой группе, а высота гистограммы представляет количество данных в проекте.

Над кодом:

# 导包
import pandas as pd
import matplotlib.pyplot as plt
from numpy import arange

# 读取电影评分数据
reviews = pd.read_csv('fandango_scores.csv')

# 取出需要展示的列名
cols = ['FILM', 'RT_user_norm', 'Metacritic_user_nom', 'IMDB_norm', 'Fandango_Ratingvalue', 'Fandango_Stars']

# 取出需要展示的样本数据
norm_reviews = reviews[cols]

# 评分数据的列名
num_cols = ['RT_user_norm', 'Metacritic_user_nom', 'IMDB_norm', 'Fandango_Ratingvalue', 'Fandango_Stars']

# 取出第一部电影的评分样本数据
bar_heights = norm_reviews.loc[0, num_cols].values

# 条形图的位置
bar_positions = arange(5) + 0.75


tick_positions = range(1,6)
fig, ax = plt.subplots()

# 绘制条形图,第一个参数为x轴数据,第二个参数为y轴数据,第三个参数为每个条形的宽度
ax.bar(bar_positions, bar_heights,0.5)

# 设置x轴标签的位置
ax.set_xticks(tick_positions)

# 设置x轴标签的名字和角度
ax.set_xticklabels(num_cols, rotation=45)

# 设置x轴标签
ax.set_xlabel('Rating Source')

# y轴标签
ax.set_ylabel('Average Rating')

# 标题
ax.set_title('Average User Rating For Avengers: Age of Ultron (2015)')
plt.show()скопировать код

Рисование картин:

нарисовать гистограмму

Гистограммы обычно используются для подсчета данных в определенном диапазоне.

код выше

import pandas as pd
import matplotlib.pyplot as plt
reviews = pd.read_csv('fandango_scores.csv')
cols = ['FILM', 'RT_user_norm', 'Metacritic_user_nom', 'IMDB_norm', 'Fandango_Ratingvalue']
norm_reviews = reviews[cols]

# 对评分进行数量统计
fandango_distribution = norm_reviews['Fandango_Ratingvalue'].value_counts()

# 排序索引
fandango_distribution = fandango_distribution.sort_index()

imdb_distribution = norm_reviews['IMDB_norm'].value_counts()
imdb_distribution = imdb_distribution.sort_index()

fig, ax = plt.subplots()

# 绘制直方图
ax.hist(norm_reviews['Fandango_Ratingvalue'],bins=20)

plt.show()скопировать код

Постройте полученное изображение:

нарисовать точечную диаграмму

Над кодом:

# 导包
import pandas as pd
import matplotlib.pyplot as plt
from numpy import arange

# 读取电影评分数据
norm_reviews = pd.read_csv('fandango_scores.csv')

# 取出需要展示的列名
cols = ['FILM', 'RT_user_norm', 'Metacritic_user_nom', 'IMDB_norm', 'Fandango_Ratingvalue', 'Fandango_Stars']

# 取出需要展示的样本数据
norm_reviews = reviews[cols]

fig, ax = plt.subplots()

#绘制散点图
ax.scatter(norm_reviews['Fandango_Ratingvalue'], norm_reviews['RT_user_norm'])
ax.set_xlabel('Fandango')
ax.set_ylabel('Rotten Tomatoes')
plt.show()скопировать код

Нарисуйте получившуюся картинку:

нарисовать коробку

Блочная диаграмма (английский: Box-plot), также известная как диаграмма с коробкой и усами, блочная диаграмма, блочная диаграмма или блочная диаграмма, представляет собой статистическую диаграмму, используемую для отображения информации о дисперсии набора данных. Назван из-за своей формы, похожей на коробку. Он также часто используется в различных областях и часто используется в управлении качеством. Тем не менее, это относительно сложно. Он может отображать максимум, минимум, медиану, нижний квартиль и верхний квартиль набора данных.

Над кодом:

import pandas as pd
import matplotlib.pyplot as plt
reviews = pd.read_csv('fandango_scores.csv')
cols = ['FILM', 'RT_user_norm', 'Metacritic_user_nom', 'IMDB_norm', 'Fandango_Ratingvalue']
norm_reviews = reviews[cols]

num_cols = ['RT_user_norm', 'Metacritic_user_nom', 'IMDB_norm', 'Fandango_Ratingvalue']
fig, ax = plt.subplots()

#绘制盒图
ax.boxplot(norm_reviews[num_cols].values)
ax.set_xticklabels(num_cols, rotation=90)
ax.set_ylim(0,5)
plt.show()скопировать код

Нарисуйте получившуюся картинку: