В своей работе я не слишком много заговариваю , но недавно я узнал о веб-сайте под названием 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 графиков бесплатно. После этого вам придется либо удалить некоторые из ваших графиков, либо платить ежемесячную плату.
Дополнительное Чтение
- Plotly Python документация
- Руководство пользователя Plotly