Skip to content Skip to sidebar Skip to footer

Line Graph From Loop In Python

Helo everyone I need some help. I wrote this scrip: import matplotlib.pyplot as plt import scipy import pyfits import numpy as np import re import os import glob import time globa

Solution 1:

Your problem may well be here:

plt.plot([cas],[maxy],'bo')

at the point that this statement is encountered, cas is a single value and maxy is also a single value -- you have only one point to plot and therefore nothing to join. Next time round the loop you plot another single point, unconnected to the previous one, and so on. I can't be sure, but perhaps you mean to do something like:

x = []
for i inrange(len(image_list)):
    hdulist=pyfits.open(image_list[i])
    data=hdulist[0].data
    dimension=hdulist[0].header['NAXIS1']
    time=hdulist[0].header['TIME']
    hours=float(time[:2])*3600
    minutes=float(time[3:5])*60
    sec=float(time[6:])
    cas=hours+minutes+sec
    x.append(cas)

    y=[]

    for n inrange(0,dimension):
         y.append(data.flat[n])
         maxy=max(y)
    print image_list[i],cas,maxy
plt.plot(x, y ,'bo-')
plt.ion()
plt.draw()

ie plot a single line once you've collected all the x and y values. The linestyle format, bo- which provides the connecting line.

Solution 2:

OK here is solution

import matplotlib.pyplot as plt
import matplotlib.animation as animation
import scipy
import pyfits
import numpy as np
import re
import os
import glob
import time

global numbers
numbers=re.compile(r'(\d+)')

defnumericalSort(value):
    parts = numbers.split(value)
    parts[1::2] = map(int, parts[1::2])
    return parts

fig=plt.figure()
ax1=fig.add_subplot(1,1,1)

defanimate(i):
    image_list=sorted(glob.glob('*.fit'), key=numericalSort)
    cas,maxy=[],[]
    files=open("data.dat","wr")
    for n inrange(len(image_list)):
        hdulist=pyfits.open(image_list[n])
        data=hdulist[0].data
        maxy=data.max()
        time=hdulist[0].header['TIME']
        hours=int(float(time[:2])*3600)
        minutes=int(float(time[3:5])*60)
        sec=int(float(time[6:]))
        cas=hours+minutes+sec
        files.write("\n{},{}".format(cas,maxy))
    files.close()


    pool=open('data.dat','r')
    data=pool.read()
    dataA=data.split('\n')
    xar=[]
    yar=[]
    pool.close()
    for line in dataA:
        iflen(line)>1:
            x,y=line.split(',')
            xar.append(int(x))
            yar.append(int(y))
    print xar,yar            
    ax1.clear()
    ax1.plot(xar,yar,'b-')
    ax1.plot(xar,yar,'ro')        
    plt.title('Light curve')
    plt.xlabel('TIME')
    plt.ylabel('Max intensity')
    plt.grid()

This script read some values from files and plot it.

Post a Comment for "Line Graph From Loop In Python"