Библиотека matplotlib для визуализации данных Python

задняя часть Python Ресурсы изображений визуализация данных

Начинать

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

# -*-coding:utf-8-*-

Если вы все еще сталкиваетесь с проблемой искаженных китайских символов, вы можете щелкнуть правой кнопкой мыши код файла Python и выбрать «Кодировка файла», а затем выбрать формат кодировки UTF-8.

matplotlib : matplotlib.org/

Галерея различных примеров matplotlib, щелкните значок, чтобы увидеть код, используемый для создания графика.

Обратите внимание на установку matplotlib перед рисованием графика

pip install matplotlib

ускоритель пакета установки pip внутреннее зеркало, добавьте параметр -i в команду

pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple

Нарисуйте простую линейную диаграмму

Пример

import matplotlib.pyplot as plt

squares = [1, 2, 4, 5, 8]
plt.plot(squares)
plt.show()

Эффект следующий:

Изменить текст этикетки и толщину линии

import matplotlib.pyplot as plt

squares = [1, 2, 4, 5, 8]
plt.plot(squares)
# 设置图标标题,并给坐标轴加上标签
plt.title("Hello Squares", fontsize=24)
plt.xlabel("Value", fontsize=14)
plt.ylabel("Square of Value", fontsize=14)
# 设置刻度标记的大小
plt.tick_params(axis='both',labelsize=14)
plt.show()

Эффект следующий:

Графика коррекции

Внимательно наблюдайте за абсциссой и найдите, что точка координаты начинается с нуля

import matplotlib.pyplot as plt

squares = [1, 2, 4, 5, 8]
input_value = [1, 2, 3, 4, 5]
plt.plot(input_value, squares, linewidth=5)
# 设置图标标题,并给坐标轴加上标签
plt.title("Hello Squares", fontsize=24)
plt.xlabel("Value", fontsize=14)
plt.ylabel("Square of Value", fontsize=14)
# 设置刻度标记的大小
plt.tick_params(axis='both',labelsize=14)
plt.show()

Эффект следующий:

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

Используйте scatter() для рисования и оформления диаграммы рассеивания

нарисовать одну точку

import matplotlib.pyplot as plt
#
plt.scatter(5, 8)
plt.show()

Эффект следующий:

Добавьте стили, чтобы сделать его более интересным

import matplotlib.pyplot as plt
import matplotlib as mpl

# 解决中文乱码问题
# sans-serif就是无衬线字体,是一种通用字体族。
# 常见的无衬线字体有 Trebuchet MS, Tahoma, Verdana, Arial, Helvetica, 中文的幼圆、隶书等等。
# 指定默认字体 SimHei为黑体
mpl.rcParams['font.sans-serif'] = ['SimHei']
# 用来正常显示负号
mpl.rcParams['axes.unicode_minus'] = False
plt.scatter(-5, 8, s=200)
# 设置图表标题并给坐标轴加上标签
plt.title(u"单点散点图", fontsize=24)
plt.xlabel("Value", fontsize=14)
plt.ylabel("Square of Value", fontsize=14)
# 设置刻度标记的大小
plt.tick_params(axis='both', which='major', labelsize=14)

plt.show()

Эффект следующий:

нарисовать ряд точек

import matplotlib.pyplot as plt
#
x_value = [1, 2, 3, 4, 5]
y_value = [1, 2, 4, 5, 8]
plt.scatter(x_value, y_value, s=100)
plt.show()

Эффект следующий:

Рассчитывать данные автоматически

import matplotlib.pyplot as plt

x_values = list(range(1, 1001))
y_values = [x ** 2 for x in x_values]
plt.scatter(x_values, y_values, s=40)
# 设置每个坐标轴的取值范围
plt.axis([0, 1100, 0, 1100000])
plt.show()

Эффект следующий:

Удалить контуры точек данных

plt.scatter(x_values, y_values, s=40, edgecolors='none')

нестандартный цвет

plt.scatter(x_values, y_values, s=40, edgecolors='none', c='yellow')
plt.scatter(x_values, y_values, s=40, edgecolors='none', c=(0, 0.8, 0.8))

Используйте карты цветов

Цветовая карта — это последовательность цветов, которая изменяется от начального цвета к конечному.

plt.scatter(x_values, y_values, s=40, edgecolors='none', c=y_values, cmap=plt.cm.Blues)

Эффект следующий:

значок автосохранения

import matplotlib.pyplot as plt

x_values = list(range(1, 1001))
y_values = [x ** 2 for x in x_values]
plt.scatter(x_values, y_values, s=40)
# 设置每个坐标轴的取值范围
plt.axis([0, 1100, 0, 1100000])
bbox_inches='tight' 指定将图表多余的空白区域裁剪掉
# 如果要保留图表周围多余的空白区域,可省略bbox_inches实参
plt.savefig('save_plot.png', bbox_inches='tight')

случайная прогулка

Что такое случайное блуждание? Подобно молекулярному движению капель воды, молекулы сжимаются, создавая движение.

Создайте класс RandomWalk().

from random import choice
import matplotlib.pyplot as plt


class RandomWalk:
    """生成随机漫步的类"""
    def __init__(self, num_points=5000):
        """初始化随机漫步的属性"""
        self.num_points = num_points
        # 所有随机漫步都始于(0,0)
        self.x_values = [0]
        self.y_values = [0]

    def fill_walk(self):
        """计算随机漫步包含的所有点"""
        # 生成漫步包含的点,并决定每次漫步的方向
        # 不断漫步,也就是遍历列表
        while len(self.x_values) < self.num_points:
            # 给x_direction 选择一个值,结果要么是表示向右走的1,要么是表示向左走的-1
            x_direction = choice([-1, 1])
            # 随机地选择一个0~4之间的整数,决定走多远
            x_distance = choice([0, 1, 2, 3, 4])
            # 将移动方向乘以移动距离,确定沿 x 和 y 轴移动的距离
            # x_step 为正,将向右移动,为负将向左移动,而为零将垂直移动
            x_step = x_direction * x_distance
            # y轴也类似
            y_direction = choice([-1, 1])
            y_distance = choice([0, 1, 2, 3, 4])
            y_step = y_direction * y_distance
            # 拒绝原地踏步
            if x_step == 0 and y_step ==0:
                continue
            # 计算下一个点的x和y值,-1指示列表最后一个数
            next_x = self.x_values[-1] + x_step
            next_y = self.y_values[-1] + y_step
            # 附加到列表末尾
            self.x_values.append(next_x)
            self.y_values.append(next_y)
  • Простой рисунок графа случайных блужданий
rw = RandomWalk()
rw.fill_walk()
plt.scatter(rw.x_values, rw.y_values, s=15)
plt.show()

Эффект следующий:

  • Моделирование нескольких случайных блужданий
while True:
    创建一个RandomWalk实例,并将其包含的点都绘制出来
    rw = RandomWalk()
    rw.fill_walk()
    plt.scatter(rw.x_values, rw.y_values, s=15)
    plt.show()
    keep_running = input("Make another walk? (y/n): ")
    if keep_running == 'n':
        break
  • Стилизация графа случайного блуждания — раскраска
rw = RandomWalk()
rw.fill_walk()
point_numbers = list(range(rw.num_points))
plt.scatter(rw.x_values, rw.y_values, c=point_numbers, cmap=plt.cm.prism, edgecolors='none', s=15)
plt.show()

Эффект следующий:

  • Нарисуйте начальную и конечную точки
rw = RandomWalk()
rw.fill_walk()
point_numbers = list(range(rw.num_points))
plt.scatter(rw.x_values, rw.y_values, c=point_numbers, cmap=plt.cm.Blues, edgecolors='none', s=15)
plt.scatter(0, 0, c='green', edgecolors='none', s=100)
plt.scatter(rw.x_values[-1], rw.y_values[-1], c='red', edgecolors='none', s=100)
plt.show()

Эффект следующий:

  • скрыть оси
rw = RandomWalk()
rw.fill_walk()
plt.scatter(rw.x_values, rw.y_values, s=15)
plt.axes().get_xaxis().set_visible(False)
plt.axes().get_yaxis().set_visible(False)
plt.show()

Эффект следующий:

  • добавить очки
rw = RandomWalk(10000)
rw.fill_walk()
plt.scatter(rw.x_values, rw.y_values, edgecolors='none', s=15)
plt.show()

Эффект следующий:

  • Изменить размер по размеру экрана
rw = RandomWalk()
rw.fill_walk()
plt.figure(figsize=(10, 6))
# 1000 * 600像素
plt.scatter(rw.x_values, rw.y_values, edgecolors='none', s=15)
plt.show()

Эффект следующий:

Другие графические библиотеки matplotlib см. по адресу:матовый сюжет lib.org/API/_as_with…

В дополнение к matplotlib библиотека для рисования также включает pygal, ggplot, plotly и т. д.