## Geographical data plotmap with lines in python and matplotlib?

```import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import itertools

#read in data from csv organised in columns labelled 'lat','lon','elevation'
data = np.recfromcsv('elevation-sample.csv', delimiter=',')

# create a 3d axis on a figure
fig = plt.figure()

# Find unique (i.e. constant) latitude points
id_list = np.unique(data['lat'])

# stride is how many lines to miss.  set to 1 to get every line
# higher to miss more
stride = 5

# Extract each line from the dataset and plot it on the axes
for id in id_list[::stride]:
this_line_data = data[np.where(data['lat'] == id)]
lat,lon,ele = zip(*this_line_data)
ax.plot(lon,lat,ele, color='black')

# set the viewpoint so we're looking straight at the longitude (x) axis
ax.view_init(elev=45., azim=90)

ax.set_xlabel('Longitude')
ax.set_ylabel('Latitude')
ax.set_zlabel('Elevation')
ax.set_zlim([0,1500])

plt.show()```

Great! I remember seeing something like this on a t-shirt - can't find it now though :)

I also saw that and I think it was the topography map of the earth. But I cannot find it too.

I think this is the kind of thing you want - plotting lines of constant latitude on a 3d axis. I've explained what each section does in comments

Note - you can swap latitude and longitude if I've misinterpreted the axis labels in your sketch.

The data set I used to test is not mine, but I found it on github here.

This gives output as follows:

Note

## Geographical data plotmap with lines in python and matplotlib?

```# Input parameters:
padding = 1    # Relative distance between plots
ax = gca()     # Matplotlib axes to plot in
spectra = np.random.rand((10, 100))   # Series of Y-data
x_data = np.arange(len(spectra[0]))   # X-data

# Figure out distance between plots:
max_value = 0
for spectrum in spectra:
spectrum_yrange = (np.nanmax(spectrum) -
np.nanmin(spectrum))
if spectrum_yrange > max_value:
max_value = spectrum_yrange
# Plot the individual lines
for i, spectrum in enumerate(spectra):
# Normalize the data to max_value
data = (spectrum - spectrum.min()) / float(max_value)
# Offset the individual lines