On Wed, Jun 29, 2016 at 4:21 PM, Peter Otten <__pete...@web.de> wrote:
> Colin Ross wrote: > > > On Wed, Jun 29, 2016 at 2:41 PM, Peter Otten <__pete...@web.de> wrote: > > > >> Colin Ross wrote: > >> > >> > Good afternoon, > >> > > >> > I have a .dat file that is 214 rows by 65 columns that I would like to > >> > read into python and plot the 1st column versus all other columns. > >> > > >> > My code: > >> > > >> > > ######################################################################### > >> > > >> > import numpy as np > >> > import scipy > >> > import pylab as pl > >> > import matplotlib > >> > from matplotlib.ticker import ScalarFormatter, FormatStrFormatter > >> > import sys > >> > > >> > # Load in text from .dat file > >> > > >> > sed = np.loadtxt('spectra.dat', unpack = True) > >> > >> for flux in sed: > >> pl.plot(wavelength, flux) > >> > >> > pl.xscale('log') > >> > > >> > pl.show() > >> > > >> > > ######################################################################### > >> > > >> > This is fine if I want to write out a separate line for each of the 65 > >> > columns, but I would like to simplify the code by looping over the > >> > data. Can someone please help me formatting the loop correctly? > >> > > > > Thank you for the fast response! I have tried this and it outputs the > > attached image. > > This is a text-only mailing list, so the image didn't make it through. > > > It seems to only plot 1 curve, when I would have expected > > 64? > > You probably got a traceback (error information on the commandline). It is > always a good idea to include that. Example: > > $ python3 flux2.py > Traceback (most recent call last): > File "flux2.py", line 15, in <module> > pl.plot(wavelength,flux) > NameError: name 'wavelength' is not defined > > The error indicates that there is no variable called wavelength. That's > because I didn't note that you use the first column to define that, sorry. > Here's a modified script that should work: > > import numpy as np > import pylab as pl > > sed = np.loadtxt('spectra.dat', unpack=True) > > wavelength = sed[0] > for flux in sed[1:]: > pl.plot(wavelength, flux) > > pl.xscale('log') > pl.show() > > The for loop now skips the first column. > Ah yes, this works perfect now. I had added the wavelength = sed[0], but forgot to skip it in the loop! Thank you! > > > _______________________________________________ > Tutor maillist - Tutor@python.org > To unsubscribe or change subscription options: > https://mail.python.org/mailman/listinfo/tutor > _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor