繁体   English   中英

如何将模型中带有颜色的数据绘制到matplotlib底图上? 为什么没有显示数据?

[英]How do I plot data with color from my model onto matplotlib Basemap? Why is data not showing up?

我试图从我的模型的底图上绘制数据输出。 我可以看到地图,但看不到要点。 有什么问题 我正在使用python 2.7的最新版本的scikit-learn和basemap。 我有以下代码:

dataframe = pd.read_csv('powerplants.csv') # CSV file that contains latitude column, longitude column, and id for the powerplant
colormap = np.arange(500)
labels = modeloutput.labels_ # assume this is output of my model

fig = plt.figure()
ax = fig.add_subplot(111, axisbg='w', frame_on=True)
fig.set_size_inches(18.5, 10.5)
map_points = [...] # assume this is a list populated with coordinates from the csv
# Plot the clusters on the map
# m is a basemap object
m.scatter(
         [geom.x for geom in map_points],
         [geom.y for geom in map_points],
         20, marker='o', lw=.25,
         c = colormap(labels.astype(float)),
         alpha =0.9, antialiased=True,
         zorder=3)
m.fillcontinents(color='#555555')
plt.show()

此示例是从官方示例修改而来的。 在散点图中使用颜色图的关键部分是:

  1. x.datay.data是转换后的坐标。

  2. c = np.random.randint(1, 500, size=len(lats))是映射到颜色图中与每个点相对应的颜色的值。

您可能不需要的一些部分是:

 import urllib, os from netCDF4 import Dataset import numpy as np filename, _ = urllib.urlretrieve('http://coastwatch.pfeg.noaa.gov/erddap/tabledap/apdrcArgoAll.nc?longitude,latitude,time&longitude>=0&longitude<=360&latitude>=-90&latitude<=90&time>=2010-01-01&time<=2010-01-08&distinct()') dset = Dataset(filename) lats = dset.variables['latitude'][:] lons = dset.variables['longitude'][:] dset.close() os.remove(filename) c = np.random.randint(1, 500, size=len(lats)) x, y = m(lons,lats) 

这部分用于生成数据样本。 您可能需要用实际数据替换它。

 from mpl_toolkits.axes_grid1 import make_axes_locatable divider = make_axes_locatable(ax) fig.colorbar(pc, cax=divider.append_axes("right", size="5%", pad=0.05)) 

这是bogatron答案的直接应用,可以使颜色条的大小与图相匹配。 您选择保留还是不保留。

import urllib, os

import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable
from mpl_toolkits.basemap import Basemap
from netCDF4 import Dataset
import numpy as np

# data downloaded from the form at
# http://coastwatch.pfeg.noaa.gov/erddap/tabledap/apdrcArgoAll.html
filename, _ = urllib.urlretrieve('http://coastwatch.pfeg.noaa.gov/erddap/tabledap/apdrcArgoAll.nc?longitude,latitude,time&longitude>=0&longitude<=360&latitude>=-90&latitude<=90&time>=2010-01-01&time<=2010-01-08&distinct()')
dset = Dataset(filename)
lats = dset.variables['latitude'][:]
lons = dset.variables['longitude'][:]
dset.close()
os.remove(filename)
c = np.random.randint(1, 500, size=len(lats))

# draw map with markers for float locations
fig = plt.figure()
ax = fig.add_subplot(111, axisbg='w', frame_on=True)
fig.set_size_inches(18.5, 10.5)
m = Basemap(lon_0=180, ax=ax)
x, y = m(lons,lats)
pc = m.scatter(x.data, y.data, 20, marker='o', c=c, lw=.25, alpha =0.9, antialiased=True, zorder=3, cmap='summer')
m.fillcontinents(color='#555555')
divider = make_axes_locatable(ax)
fig.colorbar(pc, cax=divider.append_axes("right", size="5%", pad=0.05))
plt.show()

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM