Базовая карта плюс 3d график - PullRequest
       8

Базовая карта плюс 3d график

0 голосов
/ 16 сентября 2018

Привет вилки Stackoverflow,

Я - энтузиаст, изучающий Python.Я изучил python для визуализации моего личного проекта о плотности населения.

Я прошел учебники по matplotlib и basemap в python.Я натолкнулся на мысль о том, чтобы отобразить мой трехмерный граф поверх базовой карты, который позволяет мне использовать информацию о географических координатах.

Может кто-нибудь дать мне знать, как я могу использовать базовую карту в качестве базовой плоскости для трехмерного графа?

Пожалуйста, дайте мне знать, с каким учебным пособием или ссылками я мог бы пойти для его разработки.

Лучше всего, спасибо вам всегда за Stackoverflow.

1 Ответ

0 голосов
/ 16 сентября 2018

Документация basemap имеет небольшой раздел, посвященный трехмерной графике.Вот простой скрипт для начала:

import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap

plt.close('all')
fig = plt.figure()
ax = fig.gca(projection='3d')
extent = [-127, -65, 25, 51]

# make the map and axis.
m = Basemap(llcrnrlon=extent[0], llcrnrlat=extent[2],
             urcrnrlon=extent[1], urcrnrlat=extent[3],
             projection='cyl', resolution='l', fix_aspect=False, ax=ax)
ax.add_collection3d(m.drawcoastlines(linewidth=0.25))
ax.add_collection3d(m.drawcountries(linewidth=0.25))
ax.add_collection3d(m.drawstates(linewidth=0.25))
ax.view_init(azim = 230, elev = 15)
ax.set_xlabel(u'Longitude (°E)', labelpad=10)
ax.set_ylabel(u'Latitude (°N)', labelpad=10)
ax.set_zlabel(u'Altitude (ft)', labelpad=20)

# values to plot - change as needed. Plots 2 dots, one at elevation 0 and another 100.
# also draws a line between the two.
x, y = m(-85.4808, 32.6099)
ax.plot3D([x, x], [y, y], [0, 100], color = 'green', lw = 0.5)
ax.scatter3D(x, y, 100, s = 5, c = 'k', zorder = 4)
ax.scatter3D(x, y, 0, s = 2, c = 'k', zorder = 4)

ax.set_zlim(0., 400.)
plt.show()
...