Список графиков: как представлять свой список в виде графика на Python

9 января 2018

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

Он выглядит знакомым, не так ли? Это называется гистограммой. Обычно мы рисуем их с использованием различных приложений, таких как Microsoft Excel и Microsoft Word.

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

В этом уроке я покажу вам, как мы можем создавать гистограммы с помощью Python. Готов?

Если вам интересно углубиться в Python и узнать, как использовать возможности Python для обработки данных, почему бы не проверить эти два курса:

Python Научиться коду с помощью Python Derek Jensen Python Обработка данных с Python Derek Дженсен

Какие модули нам нужны?

Для выполнения задачи построения гистограммы нам понадобятся в основном два модуля: модуль изображения и модуль ImageDraw, оба из которых будут импортированы из библиотеки изображений Python (PIL). Модуль Image будет использоваться для загрузки изображения, в то время как модуль ImageDraw будет использоваться для создания 2D-графики (т. Е. Нарисуйте линию).

Упоминание PIL, позвольте мне показать вам, как мы можем его установить. Но я покажу вам, как установить подушку. Причина этого - самая последняя версия для PIL, PIL 1.1.7, была выпущена в 2009 году и поддерживает только Python 1.5.2-2.7. Таким образом, у него нет поддержки Python 3.X, и я боюсь, что его разработка была прекращена с момента последней фиксации проекта PIL в 2011 году.

Подушка здесь приходит на помощь, поскольку она разветвляет PIL репозиторий и добавлена ​​поддержка Python 3.X. Поэтому я буду использовать Pillow ради читателей, которые используют Python 3.X. Но это не повредит работе с Pillow, если вы используете предыдущие версии Python.

Установка подушки

Шаги, упомянутые в этом разделе об установке подушки, предназначены для пользователей Mac OS X, так как я сейчас пишу это руководство по системе Mac OS X El Capitan, но вы можете следовать инструкциям в документации для других операционные системы.

Легкий способ установки Pillow на вашем Mac - через pip, который можно установить, набрав следующую команду на вашем терминале:

$ sudo easy_install pip

Подушку в этот момент можно просто установить, набрав:

$ sudo pip install pillow

Построение программы

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

Давайте теперь прочитаем это пустое изображение и нарисуем его. Мы можем сделать это следующим образом:

from PIL import Image, ImageDraw
img = Image.open('blank.png')
draw_img = ImageDraw.Draw(img)

Поскольку мы хотим нарисовать гистограмму, нам нужны некоторые данные. Для этого мы можем использовать списки. Таким образом, наши данные (список) могут выглядеть следующим образом:

data = ['4','5','87','1','44','83','93','2','54','84','100','64']

На этом этапе все, что нам нужно сделать, это нарисовать гистограмму. Мы будем рассматривать столбцы, которые мы видим на графике в виде строк. Поэтому мы будем использовать метод line () модуля ImageDraw.

Я покажу вам код, который выполнит задачу рисования гистограммы, и я объясню это позже:

for i in data:
    x = x + 30 
    y = 200 - int(i)
    draw_img.line((x,200,x,y), width=10, fill=(255,0,0,255))

Как вы можете видеть, мы просматриваем наш список и рисуем гистограмму, используя данные в списке. x = x + 30 предоставляет нам необходимое пространство между каждой точкой данных в списке по оси x. Прежде чем продолжить, хочу напомнить, что точка (0,0) на изображении - верхняя левая точка оси. Таким образом, это будет похоже на то, чтобы рисовать линии вверх дном до нормального пути, которым мы привыкли, при маркировке координат точки на графике.

Если мы перейдем к последней строке предыдущей части скрипта, мы можем прочитать эту часть draw_img.line ((x, 200, x, y) следующим образом: нарисуйте линию от точки (x, 200) до точки (x, y). Итак, если мы начнем с первой точки данных 4, линия будет взята из (34,200) - (34,196). Таким образом, когда я покажу вам результат через некоторое время, появится ось x как если бы это было то, к чему мы обычно привыкли (начиная с левого нижнего положения для точки (0,0)). Трюк здесь заключался в использовании y = 200. Как вы увидите, всегда будет проведена линия, где y = 200 для всех точек данных, и это даст нам представление о том, как мы использовали для рисования точек на графике при просмотре нашего результата.

Ширина представляет ширину (толщину) строки, а fill = (255, 0,0,255) представляет цвет линии, т. Е. Цвет RGBA (расширение цвета RGB с альфа-каналом, представляющим непрозрачность).

Наконец, мы можем просмотреть изображение с помощью инструкции: img. show ().

Включение всего Вместе

Теперь, когда мы рассмотрели строительные блоки нашей программы, давайте поместим все вместе и посмотрим, как выглядит наш скрипт:

from PIL import Image, ImageDraw
img = Image.open('blank.png')
draw_img = ImageDraw.Draw(img)
data = ['4','5','87','1','44','83','93','2','54','84','100','64']
x = 0
for i in data:
    x = x + 30 
    y = 200 - int(i)
    draw_img.line((x,200,x,y), width=10, fill=(255,0,0,255))
img.show()

Выход

Теперь идет интересная часть, результат вышеупомянутого скрипта. Если вы запустите программу, вы должны иметь что-то похожее на следующее:

Я обрезал верхнюю часть изображения в этом снимке; он должен выглядеть больше в исходном выпуске.

Заключение

Как мы видели из этого урока, чтобы получить больший контроль над некоторыми регулярными задачами, такими как рисование графика для некоторых данных, использование языка программирования (то есть Python) было бы правильным путем.

Однако нам не всегда нужно выполнять такие задачи с нуля; мы можем вместо этого использовать пользовательские библиотеки, такие как Pillow в нашем учебнике. Использование такой библиотеки облегчило нам рисовать гистограмму, и использование Python дало нам контроль и гибкость при использовании некоторых трюков для вывода графика так, как мы хотели.