【问题标题】:Plotly world Choropleth Map offline in python?在python中离线绘制世界Choropleth Map?
【发布时间】:2018-10-25 13:26:44
【问题描述】:

我正在尝试重新创建 plotlys 示例页面中给出的世界 Choropleth 地图:https://plot.ly/python/choropleth-maps/,目的是重用一些代码,但更改通知阴影和标签的列。

但是,当我运行示例中给出的确切代码时,我收到以下错误。

plotly.exceptions.PlotlyError:因为您没有在调用中提供“file_id”,我们假设您正在尝试从 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')

【问题讨论】:

    标签: python pandas plotly visualization choropleth


    【解决方案1】:

    您需要导入离线特定功能,以便您在 jupyter notebook 中内联绘图:

    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')
    

    这会在 jupyter 笔记本中内联呈现图像,并且右上角有一个按钮可让您Download plot as a png 以及其他功能。


    如果需要将图片保存为png,可以尝试将最后一行改为:

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

    这实际上创建了一个.html 文件并将打开一个浏览器。然后您可以手动将其保存为.png。最后一步可以使用selenium 等其他库自动完成,但不确定是否有简单的方法可以解决它们的documentation

    请注意,您必须生成图形并打开文件以保存 图片。

    【讨论】:

    • 感谢您的回复,首先我在 pycharm 中运行它,我不确定这是否会影响事情。其次,您介意解释一下这将如何适应我提供的特定代码示例吗?
    • @EliotFZ,我更新了解决方案,如果还不够,请告诉我,我可以尝试找到更好的方法来保存图像
    • 感谢您的回答,图像的保存仍然是一个症结所在:由于某种原因,当我使用 pio.write_image(fig, 'fig1.png') 时,根据他们的网站应该这样做我收到错误的技巧:即“ValueError:为plotly.graph_objs.choropleth.ColorBar:'autotick'类型的对象指定的属性无效”,这很奇怪。如果您有任何建议,请告诉我。
    猜你喜欢
    • 2021-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多