Plotly:导出到 HTML 后的空白等值线图
Plotly: Blank choropleth map after exporting to HTML
我正在尝试构建亚洲所有国家/地区的交互式、简单的等值线热图。该图在我的 Jupyter Notebook 中显示良好,但当我尝试将其导出到 html 时,它只显示空白。
我使用的 GeoJSON 文件是 this one,这是我 google "asia geojson"
时的第一个结果
可以看到我的 DataFrame 文件的预览 here。
我的代码:
import pandas
import plotly.express as px
import plotly.graph_objects as go
import plotly.io as pio
import plotly
fig = px.choropleth(df, geojson=asia, locations='country', color='population', color_continuous_scale="reds", scope = 'asia', featureidkey="properties.admin", labels={'population':'Population Count'}, center={"lat": 30, "lon": 100})
fig.show()
plotly.offline.plot(fig, filename='myplot.html')
[Screenshot] How it looks on my Jupyter Notebook
[Screenshot] How it looks on my web browser
正如我们所见,.html 文件在我的网络浏览器中打开时没有显示任何内容。我已经阅读了文档,大多数用户也遇到了类似的问题,但我似乎无法正常工作。
我试图从他们的 official guide 中绘制美国人口普查数据的样本数据集,并且它正常导出到 .html,正如预期的那样。
我该如何解决这个问题?任何帮助将不胜感激:)
编辑:试试这个。
我已经通过 pyo.plot() 将 plotly 离线导入为 pyo 和 运行 你的无花果,它输出一个 html 文件到你笔记本的目录。
from urllib.request import urlopen
import json
with urlopen('https://gist.githubusercontent.com/hrbrmstr/94bdd47705d05a50f9cf/raw/0ccc6b926e1aa64448e239ac024f04e518d63954/asia.geojson') as response:
asia = json.load(response)
import plotly.express as px
import plotly.offline as pyo
df = px.data.gapminder().query("year==2007")
fig = px.choropleth(df, geojson=asia,
locations='iso_alpha',
color='pop',
color_continuous_scale="reds",
scope = 'asia',
featureidkey="properties.sov_a3",
labels={'population':'Population Count'},
center={"lat": 30, "lon": 100})
fig.show()
pyo.plot(fig)
这里是输出为 html 格式的示例代码。您使用的 geojson 文件与 official plotly website 上使用的数据相关联,并保存在 html 文件中。我的环境是jupyterLab 2.2.0 查看文件保存情况。
有些国家的数据没有显示,但是如果你用自己的数据替换它应该没问题。
from urllib.request import urlopen
import json
with urlopen('https://gist.githubusercontent.com/hrbrmstr/94bdd47705d05a50f9cf/raw/0ccc6b926e1aa64448e239ac024f04e518d63954/asia.geojson') as response:
asia = json.load(response)
import plotly.express as px
df = px.data.gapminder().query("year==2007")
fig = px.choropleth(df, geojson=asia,
locations='iso_alpha',
color='pop',
color_continuous_scale="reds",
scope = 'asia',
featureidkey="properties.sov_a3",
labels={'population':'Population Count'},
center={"lat": 30, "lon": 100})
fig.show()
fig.write_html("myplot.html")
我正在尝试构建亚洲所有国家/地区的交互式、简单的等值线热图。该图在我的 Jupyter Notebook 中显示良好,但当我尝试将其导出到 html 时,它只显示空白。
我使用的 GeoJSON 文件是 this one,这是我 google "asia geojson"
时的第一个结果可以看到我的 DataFrame 文件的预览 here。
我的代码:
import pandas
import plotly.express as px
import plotly.graph_objects as go
import plotly.io as pio
import plotly
fig = px.choropleth(df, geojson=asia, locations='country', color='population', color_continuous_scale="reds", scope = 'asia', featureidkey="properties.admin", labels={'population':'Population Count'}, center={"lat": 30, "lon": 100})
fig.show()
plotly.offline.plot(fig, filename='myplot.html')
[Screenshot] How it looks on my Jupyter Notebook
[Screenshot] How it looks on my web browser
正如我们所见,.html 文件在我的网络浏览器中打开时没有显示任何内容。我已经阅读了文档,大多数用户也遇到了类似的问题,但我似乎无法正常工作。
我试图从他们的 official guide 中绘制美国人口普查数据的样本数据集,并且它正常导出到 .html,正如预期的那样。
我该如何解决这个问题?任何帮助将不胜感激:)
编辑:试试这个。
我已经通过 pyo.plot() 将 plotly 离线导入为 pyo 和 运行 你的无花果,它输出一个 html 文件到你笔记本的目录。
from urllib.request import urlopen
import json
with urlopen('https://gist.githubusercontent.com/hrbrmstr/94bdd47705d05a50f9cf/raw/0ccc6b926e1aa64448e239ac024f04e518d63954/asia.geojson') as response:
asia = json.load(response)
import plotly.express as px
import plotly.offline as pyo
df = px.data.gapminder().query("year==2007")
fig = px.choropleth(df, geojson=asia,
locations='iso_alpha',
color='pop',
color_continuous_scale="reds",
scope = 'asia',
featureidkey="properties.sov_a3",
labels={'population':'Population Count'},
center={"lat": 30, "lon": 100})
fig.show()
pyo.plot(fig)
这里是输出为 html 格式的示例代码。您使用的 geojson 文件与 official plotly website 上使用的数据相关联,并保存在 html 文件中。我的环境是jupyterLab 2.2.0 查看文件保存情况。 有些国家的数据没有显示,但是如果你用自己的数据替换它应该没问题。
from urllib.request import urlopen
import json
with urlopen('https://gist.githubusercontent.com/hrbrmstr/94bdd47705d05a50f9cf/raw/0ccc6b926e1aa64448e239ac024f04e518d63954/asia.geojson') as response:
asia = json.load(response)
import plotly.express as px
df = px.data.gapminder().query("year==2007")
fig = px.choropleth(df, geojson=asia,
locations='iso_alpha',
color='pop',
color_continuous_scale="reds",
scope = 'asia',
featureidkey="properties.sov_a3",
labels={'population':'Population Count'},
center={"lat": 30, "lon": 100})
fig.show()
fig.write_html("myplot.html")