Странная ошибка при попытке сохранить рисунок Plotly в файл изображения в python? - PullRequest
0 голосов
/ 25 октября 2018

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

ValueError: Недопустимое свойство, указанное для объекта типа plotly.graph_objs.choropleth.ColorBar: 'autotick ..

Это важно для того, что я'Делая это, я могу сохранить созданную фигуру непосредственно через программу, а не открывать ее через ссылку HTML (которая работает нормально и не дает упомянутых ошибок).Я пробовал обе строки:

pio.write_image(fig, 'fig1.png')     #import plotly.io as pio

и

plotly.offline.iplot(fig,validate=False, filename ='worldmap', image ='png')

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

import pandas as pd
import plotly
from plotly.offline import download_plotlyjs, init_notebook_mode, plot, iplot
import plotly.io as pio
init_notebook_mode(connected=True)

 df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/2014_world_gdp_with_codes.csv')

'''
df=df.set_index('COUNTRY')
for x, y in zip(Countries, country_counts):
    df.loc[x, df.columns.get_loc('GDP (BILLIONS)')] = y
df[0].replace({None: 0}, inplace=True)
df['GDP (BILLIONS)']=df[0]
print(df)
'''

data = [dict(
    type='choropleth',
    locations=df['CODE'],
    z=df['GDP (BILLIONS)'],
    text=df.index,
    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='Leads'),
)]

layout = dict(
    title='',
    geo=dict(
        showframe=False,
        showcoastlines=False,
        projection=dict(
            type='Mercator'
        )
    )
)

fig = dict(data=data, layout=layout)
pio.write_image(fig, 'fig1.png')
#plotly.offline.iplot(fig,validate=False, filename ='worldmap', image ='png')

#plot(fig, validate=False, filename='world-map', image='png')

1 Ответ

0 голосов
/ 12 июля 2019

У вас есть две отдельные проблемы здесь.Значение ValueError на цветовой панели требует удаления

autotick=False, 
tickprefix='', 

Чтобы файл не сохранялся, а отображался в интерактивном режиме, измените

plotly.offline.iplot(fig,validate=False, filename ='worldmap', image ='png')

на

plotly.offline.iplot(fig, validate=False)

ВключаяСвойство filename заставляет сохранить файл.

...