<ul>
<li>kaggle上似乎有一个非常相似的数据集。我们已经找到了它的来源。不包括<em>PGR</em>,因此将其计算为年度列的总和</li>
<li>如果您想要离散箱,最简单的方法是使用<a href="https://pandas.pydata.org/docs/reference/api/pandas.cut.html" rel="nofollow noreferrer">https://pandas.pydata.org/docs/reference/api/pandas.cut.html</a></li>
<li><strong>熊猫</strong>间隔在plotly中不受支持,因此转换为字符串<code>.astype(str)</code></li>
<li>如果使用的是<strong>plotly express</strong>,则按名称引用列比始终传递序列更简单</li>
<li>完成下面的代码</li>
</ul>
<pre><code>import kaggle.cli
import sys, requests
import pandas as pd
from pathlib import Path
from zipfile import ZipFile
import urllib
import plotly.express as px
# fmt: off
# download data set
url = "https://www.kaggle.com/mohaiminul101/population-growth-annual"
sys.argv = [sys.argv[0]] + f"datasets download {urllib.parse.urlparse(url).path[1:]}".split(" ")
kaggle.cli.main()
zfile = ZipFile(f'{urllib.parse.urlparse(url).path.split("/")[-1]}.zip')
dfs = {f.filename: pd.read_csv(zfile.open(f)) for f in zfile.infolist()}
# fmt: on
popCodes = dfs["world_population_growth.csv"]
popCodes["PGR"] = popCodes.select_dtypes("number").sum(axis=1)
popCodes = popCodes.sort_values("PGR")
px.choropleth(
popCodes,
locations="Country Code",
color=pd.cut(popCodes["PGR"], bins=range(-50, 501, 50)).astype(str),
hover_name="Country Name",
hover_data={"PGR":":.1f", "Country Code":True},
color_discrete_sequence=px.colors.sequential.Plasma,
)
</code></pre>
<p><a href="https://i.stack.imgur.com/U0I8k.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/U0I8k.png" alt="enter image description here"/></a></p>