Plot seems weird

Yigit Turgut y.turgut at gmail.com
Mon Dec 26 14:14:41 EST 2011


On Dec 26, 8:58 pm, Lie Ryan <lie.1... at gmail.com> wrote:
> On 12/27/2011 04:08 AM, Yigit Turgut wrote:
>
>
>
>
>
>
>
>
>
> > On Dec 26, 11:28 am, Lie Ryan<lie.1... at gmail.com>  wrote:
> >> On 12/26/2011 05:27 AM, Yigit Turgut wrote:
>
> >>> On Dec 25, 7:06 pm, Rick Johnson<rantingrickjohn... at gmail.com>    wrote:
> >>>> On Dec 25, 9:33 am, Yigit Turgut<y.tur... at gmail.com>    wrote:
> >>>>> Hi all,
>
> >>>>> I have a text file as following;
>
> >>>>> 0.200047        0.000000
> >>>>> 0.200053        0.160000
> >>>>> 0.200059        0.000000
> >>>>> 0.200065        0.080000
> >>>>> 0.200072        0.000000
> >>>>> 0.200078        0.160000
>
> >>>>> And I am trying to plot it with ;
>
> >>>>> filenames = sys.argv[1:]
> >>>>> if len(filenames) == 0:
> >>>>>       filenames = [sys.stdin]
> >>>>> for filename in filenames:
> >>>>>       t,y1 = numpy.genfromtxt(filename, unpack=True)
> >>>>>       pyplot.plot(t,y1)
> >>>>>       pyplot.show()
>
> >>>>> But graph seems weird, not as it supposed to be. Any ideas ?
>
> >>>> Interesting. Of course "weird" leaves a LOT to be desired. On a scale
> >>>> of 1-10, how "weird" is the result?
>
> >>> I apply a 1Khz test signal just to see if things run smoothly, but I
> >>> see spikes at lower and higher ends (logic 0,1) where I should see a
> >>> clean rectangle pwm signal. By the look of it I say weirdness is
> >>> around 3/10.
>
> >> What are you expecting? Your data produces something that looks like the
> >> plot on the right of this screenshot
> >> (http://i44.tinypic.com/wwhlvp.jpg), I don't see anything weird with
> >> that; if you are expecting a square-wave-like plot (like on the left),
> >> then you should use a square-wave-like data, pyplot wouldn't magically
> >> transform a spiked-plot to squared-plot.
>
> >> Here's what I use to convert the data on right plot to data on left
> >> plot, I don't know much about numpy so it might be possible to do it
> >> more efficiently or numpy might even have something like it already.
>
> >> from itertools import izip_longest
> >> def to_square(t, y1):
> >>       sq_data = [[], []]
> >>       for x,y, xn in izip_longest(data[0], data[1], data[0][1:]):
> >>           sq_data[0].append(x)
> >>           sq_data[1].append(y)
> >>           sq_data[0].append(xn)
> >>           sq_data[1].append(y)
> >>       return numpy.array(sq_data, dtype=float)
>
> > Thanks for the tip. I know that I feed a square wave signal and record
> > this data. Thus I believe the situation can be related to sampling
> > frequency.
>
> It is due to sampling frequency, but also because you cannot sample a
> square wave perfectly because square wave has infinite steepness at the
> transitions. Although if you know the exact timing of the transitions,
> it may be possible to reconstruct the transitions perfectly.
>
> > Couldn't get your code working, maybe because I import the data from
> > file.
>
> not your fault, I made a mistake when copy-pasteing the code, here's the
> fixed code:
>
> from itertools import izip_longest
> def to_square(data):
>       sq_data = [[], []]
>       for x,y, xn in izip_longest(data[0], data[1], data[0][1:]):
>           sq_data[0].append(x)
>           sq_data[1].append(y)
>           sq_data[0].append(xn)
>           sq_data[1].append(y)
>       return numpy.array(sq_data, dtype=float)
>
> use it like this:
>
> t,y1 = to_square(numpy.genfromtxt(filename, unpack=True))
> pyplot.plot(t,y1)
> pyplot.show()

Significant improvement on the plot, pretty interesting. It runs ok
but I need to know how?! (:



More information about the Python-list mailing list