我正在尝试重新创建此处的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')
答案 0 :(得分:1)
您需要导入离线特定功能,以使您可以在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')
这将使图像在jupyter笔记本中内联显示,并且有一个按钮允许您在右上角Download plot as a png
以及其他功能。
如果您需要将图像另存为png,则可以尝试将最后一行更改为:
plot(fig, validate=False, filename='d3-world-map.html', image='png')
这实际上创建了一个.html
文件,并将打开浏览器。然后,您可以手动将其另存为.png
。可以使用selenium
之类的其他库来自动执行最后一步,但是不确定documentation有没有简单的解决方法:
请注意,您必须生成图形并打开文件以保存 图片。