Статьи

Построение данных онлайн через Plotly и Python

В своей работе я не слишком много заговариваю , но недавно я узнал о веб-сайте под названием Plotly, который предоставляет услуги печати для чьих-либо данных. У них даже есть сюжетный пакет для Python (среди прочих)! Поэтому в этой статье мы будем учиться строить с их пакетом. Давайте повеселимся, делая графики!

Начиная

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

 pip install plotly

Теперь, когда он установлен, вам нужно зайти на сайт Plotly и создать бесплатную учетную запись. Как только это будет сделано, вы получите ключ API. Чтобы упростить задачу, вы можете использовать свое имя пользователя и ключ API для создания файла учетных данных. Вот как это сделать:

import plotly.tools as tls
 
tls.set_credentials_file(
        username="your_username", 
        api_key="your_api_key")
 
# to get your credentials
credentials = tls.get_credentials_file()

Если вы не хотите сохранять свои учетные данные, вы также можете войти в их службу, выполнив следующие действия:

import plotly.plotly as py
py.sign_in('your_username','your_api_key')

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

Создание Графа

Похоже, Plotly по умолчанию использует Scatter Plot, поэтому мы начнем с этого. Я решил получить некоторые данные с сайта переписи . Вы можете скачать данные о населении любого штата США, а также другие данные. В этом случае я скачал файл CSV, в котором содержалось население каждого округа в штате Айова. Давайте взглянем:

import csv
import plotly.plotly as py
 
#----------------------------------------------------------------------
def plot_counties(csv_path):
    """

http://census.ire.org/data/bulkdata.html

    """
    counties = {}
    county = []
    pop = []
 
    counter = 0
    with open(csv_path) as csv_handler:
        reader = csv.reader(csv_handler)
        for row in reader:
            if counter  == 0:
                counter += 1
                continue
            county.append(row[8])
            pop.append(row[9])
 
    trace = dict(x=county, y=pop)
    data = [trace]
    py.plot(data, filename='ia_county_populations')
 
if __name__ == '__main__':
    csv_path = 'ia_county_pop.csv'
    plot_counties(csv_path)

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

Вы также можете посмотреть график здесь . В любом случае, как вы можете видеть в приведенном выше коде, все, что я сделал, это прочитал файл CSV и извлек название округа и население. Затем я помещаю эти данные в два разных списка Python. Наконец, я создал словарь этих списков, а затем обернул этот словарь в список. Таким образом, вы получите список, содержащий словарь, содержащий два списка! Чтобы создать график рассеяния, я передал данные в метод построения графика .

Преобразование в гистограмму

Теперь давайте посмотрим, сможем ли мы изменить ScatterPlot на гистограмму. Прежде всего, мы поиграемся с данными сюжета. Следующее было сделано через интерпретатор Python:

>>> scatter = py.get_figure('driscollis', '0')
>>> print scatter.to_string()
Figure(
    data=Data([
        Scatter(
            x=[u'Adair County', u'Adams County', u'Allamakee County', u'..', ],
            y=[u'7682', u'4029', u'14330', u'12887', u'6119', u'26076', '..'  ]
        )
    ])
)

Это показывает, как мы можем получить рисунок, используя имя пользователя и уникальный номер графика. Затем мы распечатали структуру данных. Вы заметите, что он не распечатывает всю структуру данных. Теперь давайте сделаем фактическое преобразование в гистограмму:

from plotly.graph_objs import Data, Figure, Layout
 
scatter_data = scatter.get_data()
trace_bar = Bar(scatter_data[0])
data = Data([trace_bar])
layout = Layout(title="IA County Populations")
fig = Figure(data=data, layout=layout)
py.plot(fig, filename='bar_ia_county_pop')

Это создаст гистограмму по следующему URL: https://plot.ly/~driscollis/1 . Вот изображение графика:

Этот код немного отличается от кода, который мы использовали изначально. В этом случае мы явно создали объект Bar и передали ему данные графика рассеяния. Затем мы помещаем эти данные в объект данных . Затем мы создали объект Layout и дали нашему графику заголовок. Затем мы создали объект Figure с использованием объектов данных и макета. Наконец мы построили гистограмму.

Сохранение графика на диск

Plotly также позволяет сохранить график на жестком диске. Вы можете сохранить его в следующих форматах: png, svg, jpeg и pdf. Предполагая, что у вас все еще есть объект Figure из предыдущего примера, вы можете сделать следующее:

py.image.save_as(fig, filename='graph.png')

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

Завершение

На этом этапе вы должны быть в состоянии использовать пакет plotly довольно хорошо. Доступно много других типов графиков, поэтому обязательно внимательно прочитайте документацию Plotly. Они также поддерживают потоковые графики. Насколько я понимаю, Plotly позволяет создавать 10 графиков бесплатно. После этого вам придется либо удалить некоторые из ваших графиков, либо платить ежемесячную плату.

Дополнительное Чтение