很抱歉,如果这个问题很简单,我就是使用Python和Basemap的新手.无论如何,我试图在地图上绘制20个飓风的路径(图).地图本身和传说完美呈现,但飓风的路径却没有.此外,我没有得到任何追溯消息,但我想我已经知道我的问题可能在哪里.有人可以告诉我哪里出错了.
这是csv文件的示例:
Year, Name, Type, Latitude, Longitude
1957,AUDREY,HU, 21.6, 93.3
1957,AUDREY,HU,22.0, 93.4
1957,AUDREY,HU,22.6, 93.5
1969,AUDREY,HU,28.2,99.6
1957,AUDREY,HU,26.5,93.8
1957,AUDREY,HU,27.9,93.8
1957,AUDREY,HU,29.3,95
1957,AUDREY,HU,27.9,93.8
1957,AUDREY,HU,29.3,93.8
1957,AUDREY,HU,30.7,93.5
1969,CAMILLE,HU, 21.6,99.3
1969,CAMILLE,HU,22.0,98.4
1969,CAMILLE,HU,22.6,90.5
1969,CAMILLE,HU,23.2,93.6
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止的代码:
import numpy as np
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
import csv, os, scipy
import pandas
from PIL import *
data = np.loadtxt('louisianastormb.csv',dtype=np.str,delimiter=',',skiprows=1)
'''print data'''
fig = plt.figure(figsize=(12,12))
ax = fig.add_axes([0.1,0.1,0.8,0.8])
m = Basemap(llcrnrlon=-100.,llcrnrlat=0.,urcrnrlon=-20.,urcrnrlat=57.,
projection='lcc',lat_1=20.,lat_2=40.,lon_0=-60.,
resolution ='l',area_thresh=1000.)
m.bluemarble()
m.drawcoastlines(linewidth=0.5)
m.drawcountries(linewidth=0.5)
m.drawstates(linewidth=0.5)
# Creates parallels and meridians
m.drawparallels(np.arange(10.,35.,5.),labels=[1,0,0,1])
m.drawmeridians(np.arange(-120.,-80.,5.),labels=[1,0,0,1])
m.drawmapboundary(fill_color='aqua')
color_dict = …Run Code Online (Sandbox Code Playgroud) 在 IPython Notebook 中使用 Interactive Widgets 时,特别是 FloatSliderWidget,有没有办法延迟最终结果的渲染?
我正在使用小部件和底图来显示地图数据,并且在每一步(滑动滑块时 - 控制图像叠加 alpha)的渲染尝试非常慢。
我可以设置一些延迟最终渲染的标志等吗?或者在我设置完所有滑块后添加一个按钮来显示图像?
非常感谢您的帮助。
干杯,J。
我正在尝试使用matplotlib和Basemap在地图上绘制点,其中点表示特定建筑物的纬度/经度.我的地图确实绘制了点,但将它们放在错误的位置.当我使用相同的数据并使用Bokeh做同样的事情,而不是matplotlib和底图,我得到正确的情节.
这是底图:底图版本中的INCORRECT结果
我已经在StackOverflow的其他地方看到过讨论,这可能与plot()以某种方式"移动"经度这一事实有关.我已经尝试了那里的建议,包括行:lons,lats = m.shiftdata(long,lat)然后使用移位的数据.这没有任何明显的影响.
我在Basemap和Bokeh中生成两个图的完整示例代码如下:
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
import pandas as pd
from bokeh.plotting import figure, show
from bokeh.sampledata.us_states import data as states
from bokeh.models import ColumnDataSource, Range1d
# read in data to use for plotted points
buildingdf = pd.read_csv('buildingdata.csv')
lat = buildingdf['latitude'].values
long = buildingdf['longitude'].values
# determine range to print based on min, max lat and long of the data
margin = .2 # buffer to add …Run Code Online (Sandbox Code Playgroud) from mpl_toolkits.basemap import Basemap
Run Code Online (Sandbox Code Playgroud)
给
ImportError: No module named 'mpl_toolkits.basemap'
Run Code Online (Sandbox Code Playgroud)
我用conda安装了底图
wayne@dors:~$ conda install basemap
Solving environment: done
# All requested packages already installed.
Run Code Online (Sandbox Code Playgroud)
我正在运行ubuntu 15.04,Python3.4,matplotlib 2.1.1,numpy 1.8.2,该
如何解决?
我正在寻找一种基于值填充shapefile多边形的方法。到目前为止,距底图教程(http://basemaptutorial.readthedocs.io/en/latest/shapefile.html)为止,我发现了如何用特定颜色填充多边形。
import matplotlib.pyplot as plt
import pypyodbc
from mpl_toolkits.basemap import Basemap
from matplotlib.patches import Polygon
from matplotlib.collections import PatchCollection
from matplotlib.patches import PathPatch
import numpy as np
fig= plt.figure()
ax= fig.add_subplot(111)
m=Basemap(projection='cyl',llcrnrlat=34.5,llcrnrlon=19,urcrnrlat=42,urcrnrlon=28.5,resolution='h')
m.drawmapboundary(fill_color='aqua')
m.fillcontinents(color='#ddaa66',lake_color='aqua')
m.drawcoastlines()
m.readshapefile('nomoi','nomoi')
patches = []
for info, shape in zip(m.nomoi_info, m.nomoi):
if info['ID_2'] == 14426:
patches.append( Polygon(np.array(shape), True) )
ax.add_collection(PatchCollection(patches, facecolor='m', edgecolor='k', linewidths=1., zorder=2))
plt.show()
Run Code Online (Sandbox Code Playgroud)
我想做的是从这样的字典中获取值:
dict1={14464: 1.16, 14465: 1.35, 14466: 1.28, 14467: 1.69, 14468: 1.81, 14418: 1.38}
Run Code Online (Sandbox Code Playgroud)
其中的键是shapefile中的info ['ID_2']列(如上面的代码所示),值是我要表示为颜色的变量。表示颜色图的范围从1.16到1.81不等,并且每个多边形(ID_2)的颜色都与dict1中的值相关。
提前致谢
我正在尝试通过Anaconda提示安装matplotlib-basemap,但它只是不起作用.
当我输入:
conda install basemap
Run Code Online (Sandbox Code Playgroud)
它给出的错误是:
UnsatisfiableError: The following specifications were found to be in conflict:
- basemap
- xlsxwriter
Run Code Online (Sandbox Code Playgroud)
这是否意味着我需要unistall xlsxwriter(即使我需要它)?我怎么解除这个呢?
我也尝试通过https://www.lfd.uci.edu/~gohlke/pythonlibs/#basemap下载它:
pip install basemap-1.1.0-cp27-cp27m-win_amd64.whl
Run Code Online (Sandbox Code Playgroud)
但那么错误是:
basemap-1.1.0-cp27-cp27m-win_amd64.whl is not a supported wheel on this platform.
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用轮廓f(matplotlib)在底图中绘制一些二维值。
然而,contourf 默认情况下会插入中间值并给出更平滑的数据图像。
有没有办法让轮廓停止在值之间插值?
我尝试添加关键字参数 interpolation='nearest' 但contourf 不使用它。其他选择是使用 imshow,但轮廓的一些功能不能与 imshow 一起使用。
我正在使用 python 3.6.3 和 matplotlib 2.1.2
我正在尝试学习 matplotlib 和映射函数 Basemap,并尝试在地图上绘制一个简单的经纬度坐标列表。但是,将底图坐标转换为简单的 x/y 坐标会在地图上疯狂地绘制点,我不知道为什么。我的代码如下:
locationData = parseFile(locationFile)
fig = plt.figure(figsize=(8,8))
m = Basemap(projection='merc', resolution='h',
llcrnrlat=49, llcrnrlon=-13.5,
urcrnrlat=59.5, urcrnrlon=4)
m.drawcoastlines()
m.drawmapboundary(fill_color='aqua')
m.fillcontinents(color='green', lake_color='aqua')
index=0
for entry in locationData:
lat = entry["latitudeE7"]/1E7
long = entry["longitudeE7"]/1E7
x,y = m(lat, long)
print("Plotting {} {} to x{} y{}".format(lat,long,x,y))
plt.plot(x,y, 'ok', markersize=20)
# break at 30 points for testing
if index>30: break
index+=1
plt.show()
Run Code Online (Sandbox Code Playgroud)
这是我从打印语句中得到的输出:
Plotting 52.------- 1.------- to x79364--.------- y-31476--.-------
Plotting 52.------- 1.------- to x79368--.------- y-31475--.-------
Plotting 52.------- 1.------- to x79362--.------- y-31471--.-------
Plotting …Run Code Online (Sandbox Code Playgroud) 我在下面的Python代码中运行了Python代码,该代码是"绘制地图:可视化海地地震危机数据"的一本书,用于数据分析.第242-246页
该代码应该创建一个海地的情节地图,但我得到一个错误如下:
Traceback (most recent call last):
File "Haiti.py", line 74, in <module>
x, y = m(cat_data.LONGITUDE, cat_data.LATITUDE)
File "/usr/local/lib/python2.7/site-packages/mpl_toolkits/basemap/__init__.py", line 1148, in __call__
xout,yout = self.projtran(x,y,inverse=inverse)
File "/usr/local/lib/python2.7/site-packages/mpl_toolkits/basemap/proj.py", line 286, in __call__
outx,outy = self._proj4(x, y, inverse=inverse)
File "/usr/local/lib/python2.7/site-packages/mpl_toolkits/basemap/pyproj.py", line 388, in __call__
_proj.Proj._fwd(self, inx, iny, radians=radians, errcheck=errcheck)
File "_proj.pyx", line 122, in _proj.Proj._fwd (src/_proj.c:1571)
RuntimeError
Run Code Online (Sandbox Code Playgroud)
我检查了我的机器上是否安装了mpl_toolkits.basemap和proj模块.Basemap是按照指示从源代码安装的,而proj是由Homebrew安装的,它们看起来很好.
如果您安装了底图和proj,此代码是否成功运行?如果没有,您认为这是模块安装问题,代码本身还是其他任何问题?
Haiti.csv文件可以从https://github.com/pydata/pydata-book/raw/master/ch08/Haiti.csv下载
import pandas as pd
import numpy as np
from …Run Code Online (Sandbox Code Playgroud) 我试图从这里运行底图示例,我面临一个错误'AxesSubplot'对象没有属性'get_axis_bgcolor'.当我从网站上尝试第一个例子时,我应该接收黑色,水蓝色和陆地珊瑚的轮廓,但在我的情况下,边界是黑色但水和土地都是蓝色
我正在使用:-Python 3.5.5 -Matplotlib 2.2.2
非常感谢任何帮助.