{"id":1145018,"date":"2025-01-08T23:04:43","date_gmt":"2025-01-08T15:04:43","guid":{"rendered":"https:\/\/docs.pingcode.com\/ask\/ask-ask\/1145018.html"},"modified":"2025-01-08T23:04:46","modified_gmt":"2025-01-08T15:04:46","slug":"python%e5%a6%82%e4%bd%95%e5%b0%86%e7%bb%8f%e7%ba%ac%e5%ba%a6%e6%95%b0%e6%8d%ae%e6%98%be%e7%a4%ba%e5%9c%a8%e5%9c%b0%e5%9b%be%e4%b8%8a","status":"publish","type":"post","link":"https:\/\/docs.pingcode.com\/ask\/1145018.html","title":{"rendered":"python\u5982\u4f55\u5c06\u7ecf\u7eac\u5ea6\u6570\u636e\u663e\u793a\u5728\u5730\u56fe\u4e0a"},"content":{"rendered":"<p style=\"text-align:center;\" ><img decoding=\"async\" src=\"https:\/\/cdn-kb.worktile.com\/kb\/wp-content\/uploads\/2024\/04\/24181815\/30cc2411-cc6a-4de9-a5f4-bf7dedae3a91.webp\" alt=\"python\u5982\u4f55\u5c06\u7ecf\u7eac\u5ea6\u6570\u636e\u663e\u793a\u5728\u5730\u56fe\u4e0a\" \/><\/p>\n<p><p> <strong>\u4e00\u3001Python\u5982\u4f55\u5c06\u7ecf\u7eac\u5ea6\u6570\u636e\u663e\u793a\u5728\u5730\u56fe\u4e0a<\/strong><\/p>\n<\/p>\n<p><p>Python\u53ef\u4ee5\u901a\u8fc7\u591a\u79cd\u5de5\u5177\u548c\u5e93\u5c06\u7ecf\u7eac\u5ea6\u6570\u636e\u663e\u793a\u5728\u5730\u56fe\u4e0a\uff0c\u4f8b\u5982<strong>Folium\u3001Basemap\u3001GeoPandas\u3001Plotly<\/strong>\u7b49\u3002\u672c\u6587\u5c06\u8be6\u7ec6\u4ecb\u7ecd\u5982\u4f55\u4f7f\u7528\u8fd9\u4e9b\u5de5\u5177\u548c\u5e93\u5b9e\u73b0\u8fd9\u4e00\u529f\u80fd\u3002<strong>Folium<\/strong>\u662f\u4e00\u4e2a\u7528\u6765\u5904\u7406\u5730\u56fe\u6570\u636e\u7684\u975e\u5e38\u6d41\u884c\u7684Python\u5e93\uff0c\u5b83\u57fa\u4e8eLeaflet.js\u6784\u5efa\uff0c\u63d0\u4f9b\u4e86\u7b80\u4fbf\u7684\u65b9\u6cd5\u6765\u521b\u5efa\u548c\u5c55\u793a\u5730\u56fe\u3002\u63a5\u4e0b\u6765\uff0c\u6211\u4eec\u5c06\u8be6\u7ec6\u63a2\u8ba8\u5982\u4f55\u4f7f\u7528Folium\u5c06\u7ecf\u7eac\u5ea6\u6570\u636e\u663e\u793a\u5728\u5730\u56fe\u4e0a\u3002<\/p>\n<\/p>\n<p><p><strong>Folium\u5e93\u7b80\u4ecb<\/strong><\/p>\n<\/p>\n<p><p>Folium\u662f\u4e00\u4e2aPython\u5e93\uff0c\u7528\u4e8e\u521b\u5efa\u4ea4\u4e92\u5f0f\u5730\u56fe\u3002\u5b83\u662f\u57fa\u4e8eLeaflet.js\u6784\u5efa\u7684\u3002Leaflet.js\u662f\u4e00\u4e2a\u5f00\u6e90\u7684JavaScript\u5e93\uff0c\u7528\u4e8e\u6784\u5efa\u4ea4\u4e92\u5f0f\u5730\u56fe\u3002Folium\u4f7f\u5f97\u5728Python\u4e2d\u4f7f\u7528Leaflet.js\u53d8\u5f97\u975e\u5e38\u7b80\u5355\u3002\u901a\u8fc7Folium\uff0c\u6211\u4eec\u53ef\u4ee5\u8f7b\u677e\u5730\u5c06\u5730\u7406\u6570\u636e\u53ef\u89c6\u5316\uff0c\u5e76\u6dfb\u52a0\u5404\u79cd\u5730\u56fe\u5143\u7d20\uff0c\u5982\u6807\u8bb0\u3001\u56fe\u5c42\u3001\u5f39\u51fa\u7a97\u53e3\u7b49\u3002\u63a5\u4e0b\u6765\uff0c\u6211\u4eec\u5c06\u8be6\u7ec6\u4ecb\u7ecd\u5982\u4f55\u4f7f\u7528Folium\u5c06\u7ecf\u7eac\u5ea6\u6570\u636e\u663e\u793a\u5728\u5730\u56fe\u4e0a\u3002<\/p>\n<\/p>\n<p><p><strong>\u5b89\u88c5Folium<\/strong><\/p>\n<\/p>\n<p><p>\u5728\u5f00\u59cb\u4e4b\u524d\uff0c\u6211\u4eec\u9700\u8981\u5b89\u88c5Folium\u5e93\u3002\u4f60\u53ef\u4ee5\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u901a\u8fc7pip\u8fdb\u884c\u5b89\u88c5\uff1a<\/p>\n<\/p>\n<p><pre><code class=\"language-shell\">pip install folium<\/p>\n<p><\/code><\/pre>\n<\/p>\n<p><p>\u5b89\u88c5\u5b8c\u6210\u540e\uff0c\u4f60\u5c31\u53ef\u4ee5\u5728Python\u811a\u672c\u4e2d\u4f7f\u7528Folium\u5e93\u4e86\u3002<\/p>\n<\/p>\n<p><p><strong>\u4e8c\u3001\u4f7f\u7528Folium\u7ed8\u5236\u57fa\u7840\u5730\u56fe<\/strong><\/p>\n<\/p>\n<p><p>\u5728\u7ed8\u5236\u5730\u56fe\u4e4b\u524d\uff0c\u6211\u4eec\u9996\u5148\u9700\u8981\u5bfc\u5165Folium\u5e93\u3002\u7136\u540e\uff0c\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528Folium\u7684<code>Map<\/code>\u7c7b\u6765\u521b\u5efa\u4e00\u4e2a\u5730\u56fe\u5bf9\u8c61\u3002\u4ee5\u4e0b\u662f\u4e00\u4e2a\u7b80\u5355\u7684\u793a\u4f8b\uff0c\u5c55\u793a\u5982\u4f55\u521b\u5efa\u4e00\u4e2a\u57fa\u7840\u5730\u56fe\uff1a<\/p>\n<\/p>\n<p><pre><code class=\"language-python\">import folium<\/p>\n<h2><strong>\u521b\u5efa\u4e00\u4e2a\u57fa\u7840\u5730\u56fe\uff0c\u8bbe\u7f6e\u4e2d\u5fc3\u70b9\u548c\u7f29\u653e\u7ea7\u522b<\/strong><\/h2>\n<p>m = folium.Map(location=[45.5236, -122.6750], zoom_start=13)<\/p>\n<h2><strong>\u4fdd\u5b58\u5730\u56fe\u5230HTML\u6587\u4ef6<\/strong><\/h2>\n<p>m.save(&#39;map.html&#39;)<\/p>\n<p><\/code><\/pre>\n<\/p>\n<p><p>\u5728\u4ee5\u4e0a\u4ee3\u7801\u4e2d\uff0c\u6211\u4eec\u521b\u5efa\u4e86\u4e00\u4e2a\u4ee5\u7ecf\u7eac\u5ea6(45.5236, -122.6750)\u4e3a\u4e2d\u5fc3\u7684\u5730\u56fe\uff0c\u7f29\u653e\u7ea7\u522b\u4e3a13\u3002\u6700\u540e\uff0c\u6211\u4eec\u5c06\u5730\u56fe\u4fdd\u5b58\u4e3a\u4e00\u4e2aHTML\u6587\u4ef6\u3002<\/p>\n<\/p>\n<p><p><strong>\u4e09\u3001\u5728\u5730\u56fe\u4e0a\u6dfb\u52a0\u6807\u8bb0<\/strong><\/p>\n<\/p>\n<p><p>\u521b\u5efa\u4e00\u4e2a\u57fa\u7840\u5730\u56fe\u540e\uff0c\u6211\u4eec\u53ef\u4ee5\u5728\u5730\u56fe\u4e0a\u6dfb\u52a0\u6807\u8bb0\u3002Folium\u63d0\u4f9b\u4e86\u591a\u79cd\u65b9\u6cd5\u6765\u6dfb\u52a0\u6807\u8bb0\uff0c\u5982<code>Marker<\/code>\u3001<code>CircleMarker<\/code>\u7b49\u3002\u4ee5\u4e0b\u662f\u4e00\u4e9b\u793a\u4f8b\u4ee3\u7801\uff0c\u5c55\u793a\u5982\u4f55\u5728\u5730\u56fe\u4e0a\u6dfb\u52a0\u6807\u8bb0\uff1a<\/p>\n<\/p>\n<p><pre><code class=\"language-python\">import folium<\/p>\n<h2><strong>\u521b\u5efa\u4e00\u4e2a\u57fa\u7840\u5730\u56fe<\/strong><\/h2>\n<p>m = folium.Map(location=[45.5236, -122.6750], zoom_start=13)<\/p>\n<h2><strong>\u6dfb\u52a0\u4e00\u4e2a\u6807\u8bb0<\/strong><\/h2>\n<p>folium.Marker([45.5236, -122.6750], popup=&#39;Portland, OR&#39;).add_to(m)<\/p>\n<h2><strong>\u6dfb\u52a0\u4e00\u4e2a\u5706\u5f62\u6807\u8bb0<\/strong><\/h2>\n<p>folium.CircleMarker(<\/p>\n<p>    location=[45.5215, -122.6261],<\/p>\n<p>    radius=50,<\/p>\n<p>    popup=&#39;Laurelhurst Park&#39;,<\/p>\n<p>    color=&#39;#3186cc&#39;,<\/p>\n<p>    fill=True,<\/p>\n<p>    fill_color=&#39;#3186cc&#39;<\/p>\n<p>).add_to(m)<\/p>\n<h2><strong>\u4fdd\u5b58\u5730\u56fe\u5230HTML\u6587\u4ef6<\/strong><\/h2>\n<p>m.save(&#39;map_with_markers.html&#39;)<\/p>\n<p><\/code><\/pre>\n<\/p>\n<p><p>\u5728\u4ee5\u4e0a\u4ee3\u7801\u4e2d\uff0c\u6211\u4eec\u9996\u5148\u521b\u5efa\u4e86\u4e00\u4e2a\u57fa\u7840\u5730\u56fe\u3002\u7136\u540e\uff0c\u6211\u4eec\u4f7f\u7528<code>Marker<\/code>\u7c7b\u6dfb\u52a0\u4e86\u4e00\u4e2a\u6807\u8bb0\uff0c\u5e76\u4f7f\u7528<code>CircleMarker<\/code>\u7c7b\u6dfb\u52a0\u4e86\u4e00\u4e2a\u5706\u5f62\u6807\u8bb0\u3002\u6700\u540e\uff0c\u6211\u4eec\u5c06\u5730\u56fe\u4fdd\u5b58\u4e3a\u4e00\u4e2aHTML\u6587\u4ef6\u3002<\/p>\n<\/p>\n<p><p><strong>\u56db\u3001\u5728\u5730\u56fe\u4e0a\u663e\u793aGeoJSON\u6570\u636e<\/strong><\/p>\n<\/p>\n<p><p>GeoJSON\u662f\u4e00\u79cd\u7528\u4e8e\u8868\u793a\u5730\u7406\u6570\u636e\u7684\u683c\u5f0f\u3002Folium\u652f\u6301\u663e\u793aGeoJSON\u6570\u636e\uff0c\u8fd9\u4f7f\u5f97\u6211\u4eec\u53ef\u4ee5\u8f7b\u677e\u5730\u5c06\u590d\u6742\u7684\u5730\u7406\u6570\u636e\u53ef\u89c6\u5316\u3002\u4ee5\u4e0b\u662f\u4e00\u4e2a\u7b80\u5355\u7684\u793a\u4f8b\uff0c\u5c55\u793a\u5982\u4f55\u5728\u5730\u56fe\u4e0a\u663e\u793aGeoJSON\u6570\u636e\uff1a<\/p>\n<\/p>\n<p><pre><code class=\"language-python\">import folium<\/p>\n<p>import json<\/p>\n<h2><strong>\u521b\u5efa\u4e00\u4e2a\u57fa\u7840\u5730\u56fe<\/strong><\/h2>\n<p>m = folium.Map(location=[45.5236, -122.6750], zoom_start=13)<\/p>\n<h2><strong>\u52a0\u8f7dGeoJSON\u6570\u636e<\/strong><\/h2>\n<p>geojson_data = json.loads(&#39;&#39;&#39;<\/p>\n<p>{<\/p>\n<p>    &quot;type&quot;: &quot;FeatureCollection&quot;,<\/p>\n<p>    &quot;features&quot;: [<\/p>\n<p>        {<\/p>\n<p>            &quot;type&quot;: &quot;Feature&quot;,<\/p>\n<p>            &quot;geometry&quot;: {<\/p>\n<p>                &quot;type&quot;: &quot;Point&quot;,<\/p>\n<p>                &quot;coordinates&quot;: [-122.6750, 45.5236]<\/p>\n<p>            },<\/p>\n<p>            &quot;properties&quot;: {<\/p>\n<p>                &quot;name&quot;: &quot;Portland, OR&quot;<\/p>\n<p>            }<\/p>\n<p>        }<\/p>\n<p>    ]<\/p>\n<p>}<\/p>\n<p>&#39;&#39;&#39;)<\/p>\n<h2><strong>\u5c06GeoJSON\u6570\u636e\u6dfb\u52a0\u5230\u5730\u56fe<\/strong><\/h2>\n<p>folium.GeoJson(geojson_data).add_to(m)<\/p>\n<h2><strong>\u4fdd\u5b58\u5730\u56fe\u5230HTML\u6587\u4ef6<\/strong><\/h2>\n<p>m.save(&#39;map_with_geojson.html&#39;)<\/p>\n<p><\/code><\/pre>\n<\/p>\n<p><p>\u5728\u4ee5\u4e0a\u4ee3\u7801\u4e2d\uff0c\u6211\u4eec\u9996\u5148\u521b\u5efa\u4e86\u4e00\u4e2a\u57fa\u7840\u5730\u56fe\u3002\u7136\u540e\uff0c\u6211\u4eec\u52a0\u8f7d\u4e86\u4e00\u4e9bGeoJSON\u6570\u636e\uff0c\u5e76\u4f7f\u7528<code>GeoJson<\/code>\u7c7b\u5c06\u5176\u6dfb\u52a0\u5230\u5730\u56fe\u4e0a\u3002\u6700\u540e\uff0c\u6211\u4eec\u5c06\u5730\u56fe\u4fdd\u5b58\u4e3a\u4e00\u4e2aHTML\u6587\u4ef6\u3002<\/p>\n<\/p>\n<p><p><strong>\u4e94\u3001\u4f7f\u7528Basemap\u8fdb\u884c\u5730\u56fe\u7ed8\u5236<\/strong><\/p>\n<\/p>\n<p><p>Basemap\u662fmatplotlib\u7684\u4e00\u4e2a\u6269\u5c55\uff0c\u7528\u4e8e\u7ed8\u5236\u5730\u7406\u6570\u636e\u3002\u867d\u7136Basemap\u5df2\u7ecf\u505c\u6b62\u7ef4\u62a4\uff0c\u4f46\u5b83\u4ecd\u7136\u662f\u4e00\u4e2a\u975e\u5e38\u6709\u7528\u7684\u5de5\u5177\u3002\u4ee5\u4e0b\u662f\u4e00\u4e2a\u7b80\u5355\u7684\u793a\u4f8b\uff0c\u5c55\u793a\u5982\u4f55\u4f7f\u7528Basemap\u7ed8\u5236\u5730\u56fe\uff1a<\/p>\n<\/p>\n<p><pre><code class=\"language-python\">import matplotlib.pyplot as plt<\/p>\n<p>from mpl_toolkits.basemap import Basemap<\/p>\n<h2><strong>\u521b\u5efa\u4e00\u4e2aBasemap\u5bf9\u8c61<\/strong><\/h2>\n<p>m = Basemap(projection=&#39;mill&#39;, llcrnrlat=-60, urcrnrlat=90, llcrnrlon=-180, urcrnrlon=180, resolution=&#39;c&#39;)<\/p>\n<h2><strong>\u7ed8\u5236\u6d77\u5cb8\u7ebf\u548c\u56fd\u5bb6\u8fb9\u754c<\/strong><\/h2>\n<p>m.drawcoastlines()<\/p>\n<p>m.drawcountries()<\/p>\n<h2><strong>\u7ed8\u5236\u6807\u8bb0<\/strong><\/h2>\n<p>latitudes = [45.5236, 34.0522, 40.7128]<\/p>\n<p>longitudes = [-122.6750, -118.2437, -74.0060]<\/p>\n<p>labels = [&#39;Portland, OR&#39;, &#39;Los Angeles, CA&#39;, &#39;New York, NY&#39;]<\/p>\n<p>for lat, lon, label in zip(latitudes, longitudes, labels):<\/p>\n<p>    x, y = m(lon, lat)<\/p>\n<p>    plt.plot(x, y, &#39;bo&#39;)<\/p>\n<p>    plt.text(x, y, label, fontsize=12)<\/p>\n<h2><strong>\u663e\u793a\u5730\u56fe<\/strong><\/h2>\n<p>plt.show()<\/p>\n<p><\/code><\/pre>\n<\/p>\n<p><p>\u5728\u4ee5\u4e0a\u4ee3\u7801\u4e2d\uff0c\u6211\u4eec\u4f7f\u7528Basemap\u521b\u5efa\u4e86\u4e00\u4e2a\u5730\u56fe\u5bf9\u8c61\uff0c\u5e76\u7ed8\u5236\u4e86\u6d77\u5cb8\u7ebf\u548c\u56fd\u5bb6\u8fb9\u754c\u3002\u7136\u540e\uff0c\u6211\u4eec\u5728\u5730\u56fe\u4e0a\u7ed8\u5236\u4e86\u4e00\u4e9b\u6807\u8bb0\uff0c\u5e76\u6dfb\u52a0\u4e86\u6807\u7b7e\u3002\u6700\u540e\uff0c\u6211\u4eec\u663e\u793a\u4e86\u5730\u56fe\u3002<\/p>\n<\/p>\n<p><p><strong>\u516d\u3001\u4f7f\u7528GeoPandas\u8fdb\u884c\u5730\u7406\u6570\u636e\u53ef\u89c6\u5316<\/strong><\/p>\n<\/p>\n<p><p>GeoPandas\u662f\u4e00\u4e2a\u7528\u4e8e\u5904\u7406\u5730\u7406\u6570\u636e\u7684Python\u5e93\u3002\u5b83\u57fa\u4e8ePandas\u548cShapely\u6784\u5efa\uff0c\u63d0\u4f9b\u4e86\u7b80\u4fbf\u7684\u65b9\u6cd5\u6765\u8bfb\u53d6\u3001\u5199\u5165\u548c\u5904\u7406\u5730\u7406\u6570\u636e\u3002\u4ee5\u4e0b\u662f\u4e00\u4e2a\u7b80\u5355\u7684\u793a\u4f8b\uff0c\u5c55\u793a\u5982\u4f55\u4f7f\u7528GeoPandas\u8fdb\u884c\u5730\u7406\u6570\u636e\u53ef\u89c6\u5316\uff1a<\/p>\n<\/p>\n<p><pre><code class=\"language-python\">import geopandas as gpd<\/p>\n<p>import matplotlib.pyplot as plt<\/p>\n<h2><strong>\u8bfb\u53d6\u5730\u7406\u6570\u636e<\/strong><\/h2>\n<p>world = gpd.read_file(gpd.datasets.get_path(&#39;naturalearth_lowres&#39;))<\/p>\n<h2><strong>\u7ed8\u5236\u5730\u7406\u6570\u636e<\/strong><\/h2>\n<p>world.plot()<\/p>\n<h2><strong>\u663e\u793a\u5730\u56fe<\/strong><\/h2>\n<p>plt.show()<\/p>\n<p><\/code><\/pre>\n<\/p>\n<p><p>\u5728\u4ee5\u4e0a\u4ee3\u7801\u4e2d\uff0c\u6211\u4eec\u4f7f\u7528GeoPandas\u8bfb\u53d6\u4e86\u4e00\u4e9b\u5730\u7406\u6570\u636e\uff0c\u5e76\u4f7f\u7528<code>plot<\/code>\u65b9\u6cd5\u7ed8\u5236\u4e86\u5730\u7406\u6570\u636e\u3002\u6700\u540e\uff0c\u6211\u4eec\u663e\u793a\u4e86\u5730\u56fe\u3002<\/p>\n<\/p>\n<p><p><strong>\u4e03\u3001\u4f7f\u7528Plotly\u8fdb\u884c\u4ea4\u4e92\u5f0f\u5730\u56fe\u7ed8\u5236<\/strong><\/p>\n<\/p>\n<p><p>Plotly\u662f\u4e00\u4e2a\u7528\u4e8e\u521b\u5efa\u4ea4\u4e92\u5f0f\u56fe\u8868\u7684Python\u5e93\u3002\u5b83\u63d0\u4f9b\u4e86\u4e30\u5bcc\u7684\u56fe\u8868\u7c7b\u578b\uff0c\u5305\u62ec\u5730\u56fe\u3002\u4ee5\u4e0b\u662f\u4e00\u4e2a\u7b80\u5355\u7684\u793a\u4f8b\uff0c\u5c55\u793a\u5982\u4f55\u4f7f\u7528Plotly\u7ed8\u5236\u4ea4\u4e92\u5f0f\u5730\u56fe\uff1a<\/p>\n<\/p>\n<p><pre><code class=\"language-python\">import plotly.express as px<\/p>\n<h2><strong>\u521b\u5efa\u4e00\u4e9b\u793a\u4f8b\u6570\u636e<\/strong><\/h2>\n<p>data = {<\/p>\n<p>    &#39;lat&#39;: [45.5236, 34.0522, 40.7128],<\/p>\n<p>    &#39;lon&#39;: [-122.6750, -118.2437, -74.0060],<\/p>\n<p>    &#39;name&#39;: [&#39;Portland, OR&#39;, &#39;Los Angeles, CA&#39;, &#39;New York, NY&#39;]<\/p>\n<p>}<\/p>\n<h2><strong>\u521b\u5efa\u4e00\u4e2a\u6563\u70b9\u5730\u56fe<\/strong><\/h2>\n<p>fig = px.scatter_geo(data, lat=&#39;lat&#39;, lon=&#39;lon&#39;, text=&#39;name&#39;)<\/p>\n<h2><strong>\u663e\u793a\u5730\u56fe<\/strong><\/h2>\n<p>fig.show()<\/p>\n<p><\/code><\/pre>\n<\/p>\n<p><p>\u5728\u4ee5\u4e0a\u4ee3\u7801\u4e2d\uff0c\u6211\u4eec\u4f7f\u7528Plotly\u521b\u5efa\u4e86\u4e00\u4e9b\u793a\u4f8b\u6570\u636e\uff0c\u5e76\u4f7f\u7528<code>scatter_geo<\/code>\u65b9\u6cd5\u521b\u5efa\u4e86\u4e00\u4e2a\u6563\u70b9\u5730\u56fe\u3002\u6700\u540e\uff0c\u6211\u4eec\u663e\u793a\u4e86\u5730\u56fe\u3002<\/p>\n<\/p>\n<p><p><strong>\u516b\u3001\u603b\u7ed3<\/strong><\/p>\n<\/p>\n<p><p>\u901a\u8fc7\u672c\u6587\u7684\u4ecb\u7ecd\uff0c\u6211\u4eec\u4e86\u89e3\u4e86\u5982\u4f55\u4f7f\u7528Python\u5c06\u7ecf\u7eac\u5ea6\u6570\u636e\u663e\u793a\u5728\u5730\u56fe\u4e0a\u3002\u6211\u4eec\u4ecb\u7ecd\u4e86\u591a\u79cd\u5de5\u5177\u548c\u5e93\uff0c\u5305\u62ec<strong>Folium\u3001Basemap\u3001GeoPandas\u3001Plotly<\/strong>\u7b49\u3002\u6bcf\u79cd\u5de5\u5177\u548c\u5e93\u90fd\u6709\u5176\u72ec\u7279\u7684\u529f\u80fd\u548c\u4f18\u70b9\uff0c\u53ef\u4ee5\u6839\u636e\u5177\u4f53\u9700\u6c42\u9009\u62e9\u5408\u9002\u7684\u5de5\u5177\u6765\u5b9e\u73b0\u5730\u56fe\u7ed8\u5236\u3002\u5e0c\u671b\u672c\u6587\u5bf9\u4f60\u6709\u6240\u5e2e\u52a9\u3002<\/p>\n<\/p>\n<p><p>\u4ee5\u4e0a\u662f\u5bf9\u5982\u4f55\u4f7f\u7528Python\u5c06\u7ecf\u7eac\u5ea6\u6570\u636e\u663e\u793a\u5728\u5730\u56fe\u4e0a\u7684\u8be6\u7ec6\u4ecb\u7ecd\u3002\u5982\u679c\u4f60\u6709\u66f4\u591a\u7684\u9700\u6c42\u6216\u95ee\u9898\uff0c\u6b22\u8fce\u8fdb\u4e00\u6b65\u63a2\u8ba8\u3002<\/p>\n<\/p>\n<h2><strong>\u76f8\u5173\u95ee\u7b54FAQs\uff1a<\/strong><\/h2>\n<p> <strong>\u5982\u4f55\u5728\u5730\u56fe\u4e0a\u4f7f\u7528Python\u7ed8\u5236\u7ecf\u7eac\u5ea6\uff1f<\/strong><br \/>\u5728Python\u4e2d\uff0c\u53ef\u4ee5\u4f7f\u7528\u591a\u4e2a\u5e93\u6765\u5c06\u7ecf\u7eac\u5ea6\u6570\u636e\u663e\u793a\u5728\u5730\u56fe\u4e0a\u3002\u5e38\u7528\u7684\u5e93\u5305\u62ecFolium\u3001Matplotlib\u548cGeopandas\u3002Folium\u662f\u4e00\u4e2a\u7b80\u5355\u6613\u7528\u7684\u5e93\uff0c\u9002\u5408\u5feb\u901f\u751f\u6210\u4ea4\u4e92\u5f0f\u5730\u56fe\u3002\u4f7f\u7528Folium\u65f6\uff0c\u53ef\u4ee5\u901a\u8fc7\u521b\u5efa\u5730\u56fe\u5bf9\u8c61\u5e76\u6dfb\u52a0Marker\u6765\u6807\u8bb0\u7ecf\u7eac\u5ea6\u4f4d\u7f6e\u3002<\/p>\n<p><strong>\u53ef\u4ee5\u4f7f\u7528\u54ea\u4e9b\u5730\u56fe\u670d\u52a1\u6765\u5c55\u793a\u7ecf\u7eac\u5ea6\u6570\u636e\uff1f<\/strong><br \/>Python\u652f\u6301\u591a\u79cd\u5730\u56fe\u670d\u52a1\u6765\u5c55\u793a\u7ecf\u7eac\u5ea6\u6570\u636e\uff0c\u5305\u62ecOpenStreetMap\u3001Google Maps\u548cMapbox\u7b49\u3002Folium\u9ed8\u8ba4\u4f7f\u7528OpenStreetMap\u3002\u4f7f\u7528\u4e0d\u540c\u7684\u670d\u52a1\u53ef\u4ee5\u6839\u636e\u9700\u6c42\u9009\u62e9\uff0c\u4f8b\u5982\u5982\u679c\u9700\u8981\u66f4\u9ad8\u7684\u5730\u56fe\u7ec6\u8282\uff0c\u53ef\u4ee5\u8003\u8651Google Maps\u3002<\/p>\n<p><strong>\u5982\u4f55\u5c06\u591a\u4e2a\u7ecf\u7eac\u5ea6\u70b9\u5728\u5730\u56fe\u4e0a\u6807\u8bb0\uff1f<\/strong><br \/>\u5728Folium\u4e2d\uff0c\u53ef\u4ee5\u901a\u8fc7\u5faa\u73af\u904d\u5386\u7ecf\u7eac\u5ea6\u5217\u8868\uff0c\u4f7f\u7528Marker\u65b9\u6cd5\u5c06\u6bcf\u4e2a\u70b9\u6dfb\u52a0\u5230\u5730\u56fe\u4e0a\u3002\u6bcf\u4e2aMarker\u53ef\u4ee5\u81ea\u5b9a\u4e49\u4fe1\u606f\u5f39\u7a97\uff0c\u4f7f\u5f97\u7528\u6237\u5728\u70b9\u51fb\u6807\u8bb0\u65f6\u53ef\u4ee5\u67e5\u770b\u76f8\u5173\u4fe1\u606f\u3002\u8fd9\u79cd\u65b9\u5f0f\u975e\u5e38\u9002\u5408\u5c55\u793a\u591a\u4e2a\u5730\u70b9\uff0c\u6bd4\u5982\u65c5\u6e38\u8def\u7ebf\u6216\u6570\u636e\u5206\u5e03\u3002<\/p>\n<p><strong>\u5982\u4f55\u5c06\u5730\u56fe\u4fdd\u5b58\u4e3a\u56fe\u50cf\u6216HTML\u6587\u4ef6\uff1f<\/strong><br \/>\u901a\u8fc7Folium\u751f\u6210\u7684\u5730\u56fe\u53ef\u4ee5\u8f7b\u677e\u4fdd\u5b58\u4e3aHTML\u6587\u4ef6\uff0c\u7528\u6237\u53ea\u9700\u8c03\u7528\u5730\u56fe\u5bf9\u8c61\u7684save\u65b9\u6cd5\u5e76\u6307\u5b9a\u6587\u4ef6\u540d\u3002\u5bf9\u4e8e\u56fe\u50cf\u683c\u5f0f\u7684\u4fdd\u5b58\uff0c\u867d\u7136Folium\u4e0d\u76f4\u63a5\u652f\u6301\uff0c\u4f46\u53ef\u4ee5\u8003\u8651\u4f7f\u7528\u622a\u56fe\u5de5\u5177\u6216\u8005\u5c06\u751f\u6210\u7684HTML\u5730\u56fe\u5728\u6d4f\u89c8\u5668\u4e2d\u6253\u5f00\u540e\u8fdb\u884c\u622a\u56fe\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"\u4e00\u3001Python\u5982\u4f55\u5c06\u7ecf\u7eac\u5ea6\u6570\u636e\u663e\u793a\u5728\u5730\u56fe\u4e0a Python\u53ef\u4ee5\u901a\u8fc7\u591a\u79cd\u5de5\u5177\u548c\u5e93\u5c06\u7ecf\u7eac\u5ea6\u6570\u636e\u663e\u793a\u5728\u5730\u56fe\u4e0a\uff0c\u4f8b\u5982F [&hellip;]","protected":false},"author":3,"featured_media":1145029,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[37],"tags":[],"acf":[],"_links":{"self":[{"href":"https:\/\/docs.pingcode.com\/wp-json\/wp\/v2\/posts\/1145018"}],"collection":[{"href":"https:\/\/docs.pingcode.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/docs.pingcode.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/docs.pingcode.com\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/docs.pingcode.com\/wp-json\/wp\/v2\/comments?post=1145018"}],"version-history":[{"count":"1","href":"https:\/\/docs.pingcode.com\/wp-json\/wp\/v2\/posts\/1145018\/revisions"}],"predecessor-version":[{"id":1145030,"href":"https:\/\/docs.pingcode.com\/wp-json\/wp\/v2\/posts\/1145018\/revisions\/1145030"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/docs.pingcode.com\/wp-json\/wp\/v2\/media\/1145029"}],"wp:attachment":[{"href":"https:\/\/docs.pingcode.com\/wp-json\/wp\/v2\/media?parent=1145018"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/docs.pingcode.com\/wp-json\/wp\/v2\/categories?post=1145018"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/docs.pingcode.com\/wp-json\/wp\/v2\/tags?post=1145018"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}