Ploly World Choropleth Карта в автономном режиме в Python? - PullRequest
0 голосов
/ 25 октября 2018

Я пытаюсь воссоздать карту мира Choropleth, приведенную на странице примера plotlys здесь: https://plot.ly/python/choropleth-maps/ с намерением повторно использовать часть кода, но изменяя столбец, который информирует о затенениях и маркировке.

Однако, когда я запускаю точный код, приведенный в примере, я получаю следующую ошибку.

plotly.exceptions.PlotlyError: Поскольку вы не указали 'file_id' в вызове, мы предполагаем, что вы пытаетесь получить цифру из URL-адреса.Вы указали URL, '', мы ожидали, что он будет начинаться с 'https://plot.ly'. Запустите справку по этой функции для получения дополнительной информации.

Я понятия не имею, откуда возникает эта ошибка, и мояНа самом деле вопрос заключается в том, как мне адаптировать код, чтобы он генерировал указанную фигуру в автономном режиме?Во-вторых, существует ли простой способ сохранения рисунка непосредственно в png?Извиняюсь, если это тривиально, я совершенно новый для пакета.

Вот код:

import plotly.plotly as py
import pandas as pd

df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/2014_world_gdp_with_codes.csv')
data = [dict(
    type='choropleth',
    locations=df['CODE'],
    z=df['GDP (BILLIONS)'],
    text=df['COUNTRY'],
    colorscale=[[0, "rgb(5, 10, 172)"], [0.35, "rgb(40, 60, 190)"], [0.5, "rgb(70, 100, 245)"],\
                [0.6, "rgb(90, 120, 245)"], [0.7, "rgb(106, 137, 247)"], [1, "rgb(220, 220, 220)"]],
    autocolorscale=False,
    reversescale=True,
    marker=dict(
        line=dict(
            color='rgb(180,180,180)',
            width=0.5
        )),
    colorbar=dict(
        autotick=False,
        tickprefix='$',
        title='GDP<br>Billions US$'),
)]

layout = dict(
    title='2014 Global GDP<br>Source:\
            <a href="https://www.cia.gov/library/publications/the-world-factbook/fields/2195.html">\
            CIA World Factbook</a>',
    geo=dict(
        showframe=False,
        showcoastlines=False,
        projection=dict(
            type='Mercator'
        )
    )
)

fig = dict(data=data, layout=layout)
py.iplot(fig,validate=False, filename='d3-world-map')

1 Ответ

0 голосов
/ 25 октября 2018

Вам необходимо импортировать определенные в автономном режиме специальные функции, которые позволяют вам строить графики в блокноте jupyter:

import plotly.figure_factory as ff
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
init_notebook_mode(connected=True)

# All of your code
# ....

# Just change the last line from py.iplot to iplot
iplot(fig,validate=False, filename='d3-world-map')

enter image description here

Это отображаетизображение встроено в блокнот jupyter, и есть кнопка, которая позволяет вам Download plot as a png в правом верхнем углу, наряду с другими функциями.


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

plot(fig, validate=False, filename='d3-world-map.html', image='png')

Это фактически создаст файл .html и откроет браузер.Затем вы можете вручную сохранить это как .png.Последний шаг может быть автоматизирован с другими библиотеками, такими как selenium, но не уверен, что есть простой способ обойти это, учитывая их документацию :

Обратите внимание, что вы должны сгенерировать графики откройте файл, чтобы сохранить изображение.

...