Примеры графических программ на python

На предыдущих занятиях мы разобрали библиотеку, которая позволяла работать с графиками. Однако, основная ее функциональность сосредоточена на разного вида диаграммах. Сегодня разберемся с модулем, который нам дает возможность рисовать как заблагорассудится. Для Питона есть множество библиотек для работы с графикой (как обычно), мы рассмотрим сегодня самую простую из них: graphics.py . Начнем с простого примера. Если он вдруг не заработает сразу, то выполните у себя в терминале

pip3 install —user graphics.py
from graphics import * import time # наша рисующая функция def gr(): winWidth = 800 winHeight = 600 # Создадим окно с заголовком «Шарик» и размером 800 на 600 пикселей win = GraphWin(«Шарик», winWidth, winHeight) # В координаты 50, 50 поместим окружность радиусом 10 c = Circle(Point(50, 50), 10) # В координаты 50, 50 напишем текст e = Text(Point(200, 100), «Не то, чтобы совсем не попал, но только не попал в шарик!») # нарисуем шарик в окне win c.draw(win) # нарисуем текст в окне win e.draw(win) # запустим цикл, который будет ждать нажатия мышью while (True): # подождем, пока кто-нибудь не кликнет мышкой в окне clickPoint = win.

getMouse() # напечатаем на экран координаты точки клика print(clickPoint) # если лопнули шарик if c.getP1().getX() clickPoint.getX() c.getP2().getX() and c.getP1().getY() clickPoint.

ТОП 5 Лучших графических (GUI) фреймворков Python / Графический интерфейс python

getY() c.getP2().getY(): # то удалим шарик с экрана c.undraw() # изменим текст e.setText(«Пух!») # подождем 2 секунды time.sleep(2) # и прервем выполнение цикла break # и закроем графическое окно win.

close() # запустим функцию gr()

Функции GraphWin

GraphWin(title, width, height) — создает новое графическое окно на экране. Если не указать параметров, то будет создано окно размером 200х200 пикселей. win = GraphWin(«Тут картинка», 640, 480)

plot(x, y, color) — рисует в окне пиксель по координатам (x, y) цветом color. Например: win.plot(x, y, «yellow»)

setBackground(color) — заливает фон окна выбранным цветом. Например win.setBackground(«green»)
close() — закрывает окно. Например: win.close()

getMouse() — останавливает выполнение программы и ждет, пока пользователь не кликнет мышью внутри графического окна. После клика возвращает координаты точки клика в переменную типа Point. Например: ‘clickPoint = win.getMouse()’

checkMouse() — ведет себя аналогично getMouse, но не останавливает выполнение программы. При вызове, возвращает координаты последнего клика или None если с предыдущего вызова checkMouse или getMouse клика не было.

getKey() — приостанавливает выполнение программы и ожидает пока нажмут кнопку на клавиатуре. Возвращает строчку, в которой хранится нажатая клавиша. Например: keyString = win.getKey()

checkKey() — аналогично checkMouse, но для клавиатуры. В отличие от checkMouse, если клавиша нажата не была, то возвращает пустую строку.

getWidth() — возвращает значение ширины графического окна в пикселях
getHeight() — возвращает значение высоты графического окна в пикселях

Графические элементы

graphics.py хранит в себе реализацию стандартных графических примитивов (точка, линия, окружность и т.д.) в виде типов данных Point, Line, Circle, Oval, Rectangle, Polygon, Text. Для каждого типа данных можно установить следующие свойства:

Как быстро сделать графический интерфейс на Python

setFill(color) — цвет заливки внутренней части. circ.setFill(«red»)
setOutline(color) — цвет контура. circ.setOutline(«blue»)
setWidth(pixels) — ширина контура в пикселях. circ.setWidth(2)

draw(graphWin) — рисует объект в выбранном графическом окне. circ.draw(win) ВАЖНО: для всех типов данных в этом разделе, чтобы увидеть их на экране нужно вызвать эту функцию для каждой необходимой переменной.

undraw(graphWin) — скрывает объект с выбранного графического окна. circ.undraw(win)
move(dx, dy) — перемещает объект на величину dx по x и dy по y. circ.move(10, 15.5)
clone() — возвращает копию объекта. copy = circ.clone()

Точка

Самый простой тип данных. Хранит в себе просто две координаты на экране.

Point(x, y) — создает точку с координатами x и y. Внимание, точка просто создается в оперативной памяти, она НЕ рисуется на экране. Например: ‘aPoint = Point(3.5, 8)’ Чтобы отобразить эту точку, нужно вызвать функцию draw: aPoint.draw(win)

getX() — возвращает координату x. x = aPoint.getX()
getY() — возвращает координату y. y = aPoint.getY()

Линия

Line(point1, point2) — cоздает переменную типа Line. В качестве аргументов передаются 2 переменные типа Point, которые задают начало и конец линии.

setArrow(endString) — добавляет к концам линии символ стрелки. Стрелка может рисоваться на каждом из концов независимо или сразу на обоих. Например: aLine .setArrow(«both») . Чтобы указать где рисовать стрелку используются такие значения переменной endSting:

Источник: wiki.nsunc.com

Примеры графических программ на python

Программирование на Python работы с текстом, строками, числами или массивами и даже работа с файлами мало вдохновляют.

С библиотекой Pygame на Python Вы можете решать свои примеры с вводом/выводом в оконном графическом интерфейсе. Создание на Python рабочего окна не потребует от Вас много усилий. Установите модуль Pygame, скопируйте каркас программы с графическим интерфейсом и можете начинать писать свои программы на новом уровне.
Каркас для программы на Python которая выводит текст и переменную в окно с графическим интерфейсом:

#!/usr/bin/env python3 import pygame, sys from pygame.locals import * FPS = 50 silver = (194, 194, 194) black = (0, 0, 0) pygame.init() screen = pygame.display.set_mode((600, 400),RESIZABLE, 32) clock = pygame.time.Clock() font = pygame.font.SysFont(«Ubuntu Condensed», 35, bold=False, italic=False) year = 2021 while True: clock.tick(FPS) for i in pygame.event.get(): if i.type == QUIT: pygame.quit() sys.exit() elif i.type == KEYDOWN: print(i.key) year = year + 1 screen.fill(black) text = font.render(«Привет Мир! «+str(year)+» год!»,True,silver) screen.blit(text, [150,170]) pygame.display.update()

В переменных silver и black определены значения соответствующих цветов в формате RGB.

Функция screen = pygame . display . set_mode(( 600 , 400 ),RESIZABLE, 32 ) создаёт объект окно размером 600х400 px с возможностью изменения этого размера и с глубиной цвета 32 bit.

Читайте также:
Как установить программу 1с зарплата и кадры

Функция font = pygame . font . SysFont( «Ubuntu Condensed» , 35 , bold = False , italic = False ) создаёт объект font содержащий параметры шрифта. Первый аргумент функции SysFont( «Ubuntu Condensed» , 35 , bold = False , italic = False ) — это имя системного шрифта. Укажите вместо названия шрифта ключевое слово None и шрифт будет выбран по умолчанию. Второй аргумент функции SysFont — размер шрифта.

Созданное нами окно, объект screen, закроется после завершения программы, а чтобы программа работала долго и окно самопроизвольно не закрылось, мы создали бесконечный цикл while True .

Метод event.get() обновляет список событий, а в цикле for in каждое из этих событий сравнивается в операторе if … elif с константой QUIT и KEYDOWN:

  • В QUIT хранится код закрытия окна (Alt+F4), соответствующий щелчку мыши по крестику в заголовке окна. Если событие QUIT произошло, то окно закроется функцией pygame.quit() и программа будет завершена функцией sys.exit().
  • В KEYDOWN хранится код события “нажата клавиша”. Если событие KEYDOWN произошло, то можно считать код нажатой клавиши, что мы и делаем в функции print().

Функция screen . fill(black) очищает рабочую область окна, заливая его определённым цветом.

Функция text = font . render( «Привет Мир! » + str (year) + » год!» , True ,silver) создаёт графический объект, содержащий текст и атрибуты.

Функция screen . blit(text, [ 150 , 170 ]) записывает графический объект в кадровый буфер окна в виде прямоугольной области начиная с заданной в параметрах функции blit координаты.

Окно PyGame

Функция display.update() обновляет содержимое окна. Если мы, в дальнейшем, организуем в цикле while вывод в окно графической или текстовой информации, то функция update(), с частотой FPS (кадров в секунду) будет отображать эту информацию в нашем окне.

За дополнительной информацией можно обратиться к справочнику функций библиотеки Pygame.

  • Вы здесь:
  • Главная
  • Робототехника
  • Пример программы на Python с библиотекой Pygame
  • Игра Сапёр v3 на Python
  • Игра Flip-Flop v3
  • Lines98
  • Микрофон
  • Калькулятор v3
  • Где ест уж v3
  • Транзистор и фоторезистор.
  • Датчик препятствий
  • Игровое поле из Button
  • Игра Memory
  • Датчик инфракрасных импульсов
  • Типы C++
  • 3-D модель катушки ротора
  • ESP32-C3 Wi-Fi точка доступа
  • ESP32-C3 FTM
  • ESP32-C3 Sigma-Delta модуляция
  • Установка Arduino IDE для ESP32-C3
  • ESP32-C3 analogReadMilliVolts
  • ESP32-C3 Serial.print
  • ledcWriteNote для ESP-C3-Kit
  • Плата ESP-C3-32S Kit
  • ШИМ в ESP-C3 Kit
  • Программа Blink для ESP-C3 Kit
  • Подключение ESP-C3-Kit к Arduino IDE
  • Плата ESP-C3-13 Kit
  • Калькулятор с tkinter
  • Драйвер моторов MX1508
  • Калькулятор на Arduino
  • Raspberry Pi Pico Python SDK
  • Raspberry Pi Pico C/C++ SDK
  • Программирование на MMBASIC
  • PicoMiteVGA
  • Сервопривод и Ардуино
  • Arduino машина с ИК управлением
  • Двигатель постоянного тока
  • ИК пульт ДУ
  • Ультразвуковой дальномер HC-SR04
  • АЦП и ШИМ в Arduino
  • Крестики нолики v2.0
  • Программа для музыкальной шкатулки
  • Ханойские башни, игра
  • Flip-Flop 4×4 и ООП
  • AT90S2013 с внешним генератором
  • Игра Кто быстрее
  • Игра головоломка Peg
  • Поход в пустыню
  • Оригинальная игра Сапёр
  • Программирование ATtiny861
  • Программирование AT90S2013
  • StringVar или ООП
  • Клеточный автомат Конвея
  • Flip-Flop 4×4 .
  • ООП, after() функция задержки в tkinter
  • Программирование AtTiny 13, 45, 85
  • Игра-головоломка Где ест уж
  • Игра-головоломка Чайный сервиз
  • Пишем игру Flip-Flop v2
  • Игра Быки и коровы на Python v2
  • Крестики нолики
  • Python сортировка
  • Игра Красный или Синий?
  • Индикатор 788BS
  • Python Факториал
  • Генератор псевдослучайных чисел
  • Датчик температуры в ATtiny88
  • Serial порт в ATtiny88
  • Пишем библиотеку для MAX7219 и LED матрицы
  • MAX7219 и Arduino
  • Прерывания PCINT в Arduino
  • Функция sleep() в Arduino для ATtiny88
  • ATtiny88 datasheet на русском
  • Фьюзы ATtiny88
  • Arduino Fading and Blink
  • Алгоритм Евклида. Нахождение НОД
  • Python Числа Фибоначчи
  • Python Tkinter игра Пикассо и Модильяни
  • Ищем программатор для STM 32F030F4P6
  • Python Tkinter игра Раскраска
  • Пишем игру Быки и Коровы на Python
  • Головоломка Ханойские башни на Python
  • Головоломка Ханойские башни на Си
  • Пишем игру Сапёр на Python
  • Raspberry Pi Pico fading.py
  • LCD МТ-16S2H и LiquidCrystal_74HC595
  • EasyEDA для инженеров-электронщиков
  • LCD МТ-16S2H и LiquidCrystalRus
  • Raspberry Pi Pico и MicroPython
  • Пишем игру пятнашки на Python
  • Пишем игру на Python
  • ESP8266 версии плат
  • Регистр К155ИР13
  • Linux или FreeBSD
  • Триггеры
  • Счетчик импульсов на 7493
  • Счетчик импульсов на D-триггерах
  • Цифровые индикаторы с общим катодом
  • ATtiny88 программируем в Arduino IDE
  • Конденсатор в кружке Робототехника
  • Генератор на 555-м таймере
  • Генератор НЧ на LM358
  • Tkinter виджеты
  • Pydoc в Python
  • LM358 управление голосом
  • Несимметричный мультивибратор
  • QX5252F схема включения
  • DC-DC uk преобразователь на QX5252
  • DC-DC преобразователь на QX5252
  • Python с Pygame обработка столкновений
  • Логика в Python
  • Сова на телевизор
  • Транзисторы p-n-p и n-p-n
  • IDLE
  • Thonny установка и настройка
  • Timer/Counter1 ATmega328
  • Arduino IDE
  • ATMEGA8
  • Прерывания по таймерам в Arduino
  • DC-DC преобразователь
  • LED лампа светодиодная
  • MOSFET
  • Концепция музыкальной программы для Arduino
  • Стробоскоп на 555-м таймере
  • ШИМ на 555-м таймере
  • ШИМ управление мощностью нагрузки
  • Вентилятор для CPU и Arduino
  • ATmega328P
  • Храним константы в Flash-памяти программ
  • Храним константы в EEPROM
  • Параметры по умолчанию
  • Цикл for in в Arduino
  • Драйвер MAX7219 и светодиодная матрица 8х8
  • WS2811 и RGB светодиод
  • Assembler в Arduino
  • Python Gtk игра Раскраска
  • LGT8F328P в Arduino IDE
  • Адрес i2c
  • Музыкальная шкатулка
  • LCD 1602 i2c и Arduino
  • Корпус VESA для Orange Pi PC 2
  • Blink для адресуемых RGB светодиодов
  • ESP8266-01 Web-сервер
  • ESP8266 прошивка AT-espressif
  • Edragon, ESP firmware
  • Esptool
  • ESP8266 в Arduino IDE
  • ESP8266-01 подключение USB-UART
  • ESP8266-01 AT интерпретатор
  • CuteCom монитор порта
  • ESP8266-01 подключение
  • SSD1306 IIC print()
  • ATMega328 в Arduino без кварца
  • Фьюзы в Arduino UNO
  • Программирование Arduino Pro Mini
  • L7805 стабилизатор напряжения
  • MLX90614 — ИК термометр
  • Датчик ИК импульсов
  • Arduino-Hava Nagila
  • Arduino-Финская полька
  • Arduino-Гимн РФ
  • Arduino-Григ В пещере Горного Короля
  • heaptrack профилировщик памяти
  • Консольная программа на Visual J#
  • Консольная программа на C#
  • Консольная программа на Visual Basic.NET
  • Blender на русском
  • Arduino Digispark ATTiny85
  • cairo.Context object Деформации
  • cairo.Context object Фигуры Лиссажу
  • cairo.Context object Движение по криволинейной траектории
  • cairo.Context object Пинг-понг по стенкам
  • cairo.Context object Загружаем картинку
  • cairo.Context object Трансформация прямоугольных координат
  • cairo.Context object Штриховые линии
  • cairo.Context object Шар с радиальной заливкой
  • cairo.Context object Градиентная заливка
  • cairo.Context object Сдвигаем и вращаем начало координат
  • cairo.Context object Начало координат
  • cairo.Context object Сглаживание контура изображения или шрифта
  • cairo.Context object Углы соединения линий
  • cairo.Context object Рисуем линии
  • Gtk Drawin Area и GObject
  • Gtk Drawin Area и PangoCairo
  • Python Gtk окно с текстом
  • Python Gtk игра Flip-Flop
  • Python Gtk Крестики — нолики
  • Anjuta Gtk Python Кнопка
  • Visual Studio Code редактор
  • Vala язык программирования
  • Anjuta Gtk Python
  • Glade Gtk Python сигналы
  • Glade Gtk Python
  • Python графическая библиотека Turtle
  • Python графическая библиотека GTK
  • Python графическая библиотека Tkinter
  • Инкубатор
  • Пример программы на Python с библиотекой Pygame
  • Создание игр на Python с Pygame
  • Классическая игра Жизнь
  • Игра Жизнь на дисплее SSD1306 и Arduino
  • SSD1306 Display
  • Импульсный регулятор мощности на Ардуино
  • Оператор switch case. Электронная игра на Arduino.
  • Игра инверсия
  • Android пишем программу на C++
  • Цикл while. Алгоритм Евклида.
  • Geany пишем программу на C++
  • Как скомпилировать cpp под Linux
  • Схема преобразователя напряжения на транзисторе
  • Схема фонарика с 2-мя батарейками
  • Author Login
  • Карта сайта
Читайте также:
Команда сохранить как окна программы word находится

Источник: adior.ru

Обзор пакетов для визуализации данных на Python

python data visualization

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

В этой статье я расскажу о нескольких популярных пакетах визуализации Python, их плюсах и минусах, а также ситуациях, в которых каждый может выгодно проявить себя. Я включу в этот обзор обсуждение только двумерных графиков, хотя многие из этих пакетов также хорошо поддерживают 3D.

Перевод статьи «Reviewing Python Visualization Packages», автор — Aaron Frederick, ссылка на оригинал — в подвале статьи.

Matplotlib, Seaborn и Pandas

Я собираюсь включить их в одну группу по нескольким причинам. Во-первых, из-за того, что графики Seaborn и Pandas были построены на основе Matplotlib — когда вы используете Seaborn или df.plot() в Pandas, вы фактически используете код, который использует для построения Matplotlib. Таким образом, эстетика для них схожа, и настройка ваших графиков будет выглядеть очень похожим образом.

Когда я думаю об этих инструментах визуализации, я думаю о трех словах: исследовательский анализ данных. Эти пакеты отлично подходят для первого взгляда на ваши данные, но их не хватает, когда дело доходит до презентации. Matplotlib — это низкоуровневая библиотека, которая обеспечивает невероятные уровни настройки (так что не стоит исключать ее как вариант для презентации!), Но есть много других инструментов, которые делают великолепную графику, достойную презентации, намного проще. Matplotlib также имеет набор стилей, которые по внешнему стилю имитируют другие популярные пакеты, такие как ggplot2 и xkcd. Ниже приведены некоторые примеры графиков, созданных с использованием Matplotlib и его двоюродных братьев.

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

import seaborn as sns import matplotlib.pyplot as plt color_order = [‘xkcd:cerulean’, ‘xkcd:ocean’, ‘xkcd:black’,’xkcd:royal purple’, ‘xkcd:royal purple’, ‘xkcd:navy blue’, ‘xkcd:powder blue’, ‘xkcd:light maroon’, ‘xkcd:lightish blue’,’xkcd:navy’] sns.barplot(x=top10.Team, y=top10.Salary,

Простая гистограмма в matplotlib

Этот второй график представляет собой график Q-Q остатков регрессионного эксперимента. Основная цель этой визуализации — показать, сколько строк необходимо для создания полезной визуализации, даже если эстетика не сногсшибательна.

import matplotlib.pyplot as plt import scipy.stats as stats #model2 is a regression model log_resid = model2.predict(X_test)-y_test stats.probplot(log_resid, dist=»norm», plot=plt) plt.title(«Normal Q-Q plot») plt.show()

Q-Q график на matplotlib

В конечном счете, Matplotlib и его родственники очень эффективны, но, как правило, не являются конечным продуктом в плане презентации.

ggplot (2)

«Почему ты говоришь о ggplot, самом популярном пакете визуализации R? Разве это не обзор пакетов для Python? »- спросите вы. Люди реализовали ggplot2 в Python, копируя все от эстетики до синтаксиса. Он выглядит и ощущается как ggplot2, но с дополнительным бонусом наличия зависимости от уже устаревшей версии пакета Pandas. Если вы хотите использовать НАСТОЯЩИЙ ggplot в R (который имеет такой же синтаксис и внешний вид, но без зависимостей), я расскажу о некоторых его преимуществах здесь! Тем не менее, если вы действительно хотите использовать ggplot в Python, вы должны установить Pandas версии 0.19.2, но я бы предостерег вас от понижения версии вашего Pandas.

#All Salaries ggplot(data=df, aes(x=season_start, y=salary, colour=team)) + geom_point() + theme(legend.position=»none») + labs(title = ‘Salary Over Time’, x=’Year’, y=’Salary ($)’)

График в ggplot

Bokeh

Bokeh это красиво. Концептуально похож на ggplot в том,что он тоже использует грамматику графики для структурирования своих фигур. Bokeh имеет простой в использовании интерфейс, который создает очень профессиональные графики и информационные панели. Чтобы проиллюстрировать мою точку зрения (извините!), Ниже приведен пример кода для создания гистограммы из набора данных 538 Masculinity Survey.

import pandas as pd from bokeh.plotting import figure from bokeh.io import show # is_masc is a one-hot encoded dataframe of responses to the question: # «Do you identify as masculine?» #Dataframe Prep counts = is_masc.sum() resps = is_masc.columns #Bokeh p2 = figure(title=’Do You View Yourself As Masculine?’, x_axis_label=’Response’, y_axis_label=’Count’, x_range=list(resps)) p2.vbar(x=resps, top=counts, width=0.6, fill_color=’red’, line_color=’black’) show(p2) #Pandas counts.plot(kind=’bar’)

Читайте также:
Как открыть быстро программы

Гистограмма в Bokeh

Гистограмма показывает ответы на вопрос «Вы идентифицируете себя как мужского пола?», как было задано в недавнем опросе (538 Masculinity Survey). Код Bokeh создает элегантную и профессиональную гистограмму подсчета ответов с разумным размером шрифта, засечками по осям и форматированием. Большая часть кода, который я написал, была посвящена маркировке осей и заголовков, а также приданию столбцам цвета и границы. Делая красивые, презентабельные фигуры, я очень сильно склоняюсь к Bokeh — много эстетической работы уже сделано для нас!

Гистограмма по умолчанию в Pandas

Синий график — это то, что происходит из единственной последней строки из кода выше. Обе гистограммы имеют одинаковые значения, но служат разным целям. В исследовательской обстановке гораздо удобнее написать одну строку в Pandas, чтобы увидеть данные, но эстетика Bokeh явно явно лучше. Каждое удобство, которое обеспечивает Bokeh по умолчанию, требует настройки в matplotlib, будь то угол наложения меток вдоль горизонтальной оси, фоновые линии, разброс делений по вертикальной оси, изменение размера шрифта/выделение курсивом/выделение жирным и т.д.

На приведенном ниже графике показано несколько случайных трендов с использованием нескольких дополнительных настроек с легендами и различными типами линий и цветами:

Тренды с легендой в Bokeh

Bokeh также отличный инструмент для создания интерактивных графиков (dashboards). Я не хочу вдаваться в интерактивные графики в этом посте, но есть отличные посты (вроде этого), которые больше рассказывают о применении и реализации интерактивных графиков в Bokeh.

Plotly

Plotly чрезвычайно мощный, но настройка и создание графиков в нем занимают много времени, и эта настройка не является интуитивно понятной. Проведя большую часть утра, работая с Plotly, я пошел на обед, почти ничего не показав в результате. Я создал гистограмму без меток на осях и диаграмму рассеяния, в которой были линии, которые я не мог удалить. Некоторые заметные минусы при начале работы с Plotly:

  • Требуется ключ API и регистрация, а не просто установка через pip
  • Он строит графики данных/слоев (layouts), которые являются уникальными для Plotly и не являются интуитивно понятными
  • Слой на графике у меня не сработал (40 строк кода буквально ничего!)

Однако для всех его недостатков настройки есть свои плюсы и обходные пути:

  • Вы можете редактировать графики на веб-сайте Plotly, а также в среде Python.
  • Много функционала поддержки интерактивных графиков/панелей
  • Plotly сотрудничает с Mapbox, что позволяет создавать индивидуальные карты
  • Потрясающий потенциал для отличной графики

Для меня было бы несправедливо просто высказать свои претензии к Plotly, не показывая какой-то код и то, что я смог достичь по сравнению с тем, что сделали люди, более способные с этим пакетом.

#plot 1 — barplot # **note** — the layout lines do nothing and trip no errors data = [go.Bar(x=team_ave_df.team, y=team_ave_df.turnovers_per_mp)] layout = go.Layout( title=go.layout.Title( text=’Turnovers per Minute by Team’, xref=’paper’, x=0 ), xaxis=go.layout.XAxis( title = go.layout.xaxis.Title( text=’Team’, font=dict( family=’Courier New, monospace’, size=18, color=’#7f7f7f’ ) ) ), yaxis=go.layout.YAxis( title = go.layout.yaxis.Title( text=’Average Turnovers/Minute’, font=dict( family=’Courier New, monospace’, size=18, color=’#7f7f7f’ ) ) ), autosize=True, hovermode=’closest’) py.iplot(figure_or_data=data, layout=layout, filename=’jupyter-plot’, sharing=’public’, fileopt=’overwrite’) #plot 2 — attempt at a scatterplot data = [go.Scatter(x=player_year.minutes_played, y=player_year.salary, marker=go.scatter.Marker(color=’red’, size=3))] layout = go.Layout(title=»test», xaxis=dict(title=’why’), yaxis=dict(title=’plotly’)) py.iplot(figure_or_data=data, layout=layout, filename=’jupyter-plot2′, sharing=’public’)

Гистограмма в Plotly Попытка создания диаграммы рассеивания в Plotly

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

Потенциал графиков в Plotly

Pygal

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

  1. Инициализация холста
  2. Форматирование объектов рисунка с использованием атрибутов
  3. Добавление данных к своей фигуре, используя figure.add()

Основные проблемы, которые у меня были с Pygal, заключались в рендере графиков. Мне пришлось использовать их метод render_to_file, а затем открыть этот файл в веб-браузере, чтобы увидеть, что я построил. В конечном итоге это того стоило, поскольку графики интерактивны и имеют приятную и легко настраиваемую эстетику. В целом, пакет кажется хорошим, но имеет некоторые особенности создания/рендера файлов, которые ограничивают его привлекательность.

График в Pygal

Networkx

Networkx — отличное решение для анализа и визуализации графов, хотя визуально оно основано на matplotlib. Графы и сети — это не моя предметная область, но Networkx позволяет быстро и легко графически представлять подключенные сети. Ниже приведены несколько различных представлений простого графа, который я построил, и код, начинающий строить небольшую сеть Facebook, загруженную из SNAP в Стэнфорде.

Граф в Networkx

Код, который я использовал для цветового кодирования каждого узла по его номеру (1–10), приведен ниже:

options = < ‘node_color’ : range(len(G)), ‘node_size’ : 300, ‘width’ : 1, ‘with_labels’ : False, ‘cmap’ : plt.cm.coolwarm >nx.draw(G, **options)

Разноцветные вершины графа в Networkx

Ниже приведен код, который я написал для визуализации разреженного графа Facebook, упомянутого выше:

import itertools import networkx as nx import matplotlib.pyplot as plt f = open(‘data/facebook/1684.circles’, ‘r’) circles = [line.split() for line in f] f.close() network = [] for circ in circles: cleaned = [int(val) for val in circ[1:]] network.append(cleaned) G = nx.Graph() for v in network: G.add_nodes_from(v) edges = [itertools.combinations(net,2) for net in network] for edge_group in edges: G.add_edges_from(edge_group) options = < ‘node_color’ : ‘lime’, ‘node_size’ : 3, ‘width’ : 1, ‘with_labels’ : False, >nx.draw(G, **options)

Разреженный граф в Networkx

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

Источник: neurohive.io

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru