python - django 应用程序中地图上的散点图引发底图错误
问题描述
我在 jupyter notebook 的印度地图上创建了一个散点图,但是当我尝试在我的 djnago 应用程序中运行相同的代码时。它提出了
ModuleNotFoundError: No module named 'mpl_toolkits.basemap'
这是代码:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
# make up some data for scatter plot
lats = np.random.randint(6, 37, size=50)
lons = np.random.randint(68, 97, size=50)
fig = plt.gcf()
fig.set_size_inches(8, 6.5)
m = Basemap(projection='cyl', \
llcrnrlat=6., urcrnrlat=37., \
llcrnrlon=68., urcrnrlon=97., \
lat_ts=20, \
resolution='c',epsg=3857)
m.bluemarble(scale=1)
m.drawcoastlines(color='white', linewidth=0.2)
m.drawmapboundary(fill_color='#D3D3D3')
x, y = m(lons, lats)
plt.scatter(x, y, 10, marker='o', color='Red')
plt.show()
我在我的 django 应用程序中使用相同的 conda 解释器。这个错误的原因是什么?
解决方案
我在Win10下使用Anaconda。对于不同的操作系统或安装,解决方案可能会有所不同,但我可以尝试绘制路径。
- 您必须安装底图。见这里和这里。对我来说
conda install -c conda-forge basemap-data-hires
确实有效。 - 导入时
from mpl_toolkits.basemap import Basemap
出现错误:KeyError: PROJ_LIB
. 按照这里的经验,你必须在里面找到一个与epsg共享的目录。它预计在conda或anaconda目录中。 - 我在我的Anaconda3目录中进行了搜索,并找到了这条路径:
"C:\Anaconda3\Library\share"
然后下面的代码对我有用(你的代码也给出了一个很好的图片:-):
import os proj_lib = "C:\Anaconda3\Library\share" os.environ["PROJ_LIB"] = proj_lib import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.basemap import Basemap plt.figure(figsize=(8, 8)) m = Basemap(projection='ortho', resolution=None, lat_0=50, lon_0=-100) m.bluemarble(scale=0.5);
推荐阅读
- google-apps-script - 谷歌应用脚本的数据查询问题
- javascript - 根据对象的对象生成对象数组
- autodesk-forge - Autodesk Forge 设计自动化冻结
- c# - (2D) 在 Unity 中使用脚本制作 GameObject Shake
- java - 我们可以在 C++ 资源中嵌入可执行 jar 文件并从内存中运行它吗?
- python - 在 groupby 之后对每个组进行相当复杂的计算
- apache-spark - Databricks 中的花拼花数据集在哪里
- python - 无法保存对 BytesIO 缓冲区的更改
- swift - 如何在执行新动画时保持初始动画运行?
- c++ - 无法在 C++ 中读取 .cpp 文件