使用Basemap绘制散点图并标注图例
时间: 2023-05-13 09:06:55 浏览: 98
可以使用Basemap库中的scatter()函数绘制散点图,并使用legend()函数添加图例。以下是一个示例代码:
```python
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
# 创建Basemap对象
m = Basemap(projection='merc', llcrnrlat=-80, urcrnrlat=80,
llcrnrlon=-180, urcrnrlon=180, lat_ts=20, resolution='c')
# 绘制散点图
x, y = m([-100, 0, 100], [0, 0, 0])
m.scatter(x, y, s=100, c=['r', 'g', 'b'], alpha=0.5)
# 添加图例
plt.legend(['red', 'green', 'blue'], loc='lower left')
# 显示图形
plt.show()
```
这段代码会绘制一个在地图上的散点图,并在图例中标注每个点的颜色。
相关问题
使用basemap绘制美国地图并添加比例尺
可以使用以下代码绘制美国地图并添加比例尺:
```python
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
# 创建地图对象
m = Basemap(llcrnrlon=-119, llcrnrlat=22, urcrnrlon=-64, urcrnrlat=49, projection='lcc', lat_1=33, lat_2=45, lon_0=-95)
# 绘制州界
m.drawstates()
# 绘制海岸线
m.drawcoastlines()
# 绘制国界线
m.drawcountries()
# 添加比例尺
m.drawmapscale(-119, 22, -119, 22, 500, barstyle='fancy')
# 显示地图
plt.show()
```
这段代码使用 Basemap 库创建了一个地图对象,设置了地图的投影方式和范围,然后绘制了美国的州界、海岸线和国界线,并添加了一个比例尺。最后调用 `plt.show()` 显示地图。
已知经纬度和降水量,我想通过basemap绘制散点图,如何做?
可以按照以下步骤使用basemap绘制经纬度和降水量的散点图:
1. 导入需要的库
```python
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
```
2. 准备数据
假设你有一个包含经度、纬度和降水量的数据集,可以按照以下方式加载数据:
```python
data = np.loadtxt('data.txt')
lon = data[:, 0]
lat = data[:, 1]
precip = data[:, 2]
```
其中,`data.txt`是包含数据的文件名,第一列是经度,第二列是纬度,第三列是降水量。
3. 创建basemap对象
```python
m = Basemap(projection='mill', llcrnrlat=-90, urcrnrlat=90, llcrnrlon=-180, urcrnrlon=180)
```
这里我们选择了`mill`投影方式,设置了地图的经纬度范围。
4. 绘制地图
```python
m.drawcoastlines()
m.drawcountries()
m.drawstates()
```
这里我们绘制了海岸线、国界线和州界线。
5. 绘制散点图
```python
x, y = m(lon, lat)
m.scatter(x, y, c=precip, cmap='Blues', zorder=10)
```
这里使用了`m.scatter`方法绘制散点图,`c`参数指定了颜色,`cmap`参数指定了颜色映射。
6. 添加颜色条
```python
plt.colorbar(fraction=0.046, pad=0.04)
```
这里使用`plt.colorbar`方法添加颜色条。
7. 显示图像
```python
plt.show()
```
完整代码:
```python
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
# 准备数据
data = np.loadtxt('data.txt')
lon = data[:, 0]
lat = data[:, 1]
precip = data[:, 2]
# 创建basemap对象
m = Basemap(projection='mill', llcrnrlat=-90, urcrnrlat=90, llcrnrlon=-180, urcrnrlon=180)
# 绘制地图
m.drawcoastlines()
m.drawcountries()
m.drawstates()
# 绘制散点图
x, y = m(lon, lat)
m.scatter(x, y, c=precip, cmap='Blues', zorder=10)
# 添加颜色条
plt.colorbar(fraction=0.046, pad=0.04)
# 显示图像
plt.show()
```