Plot seems weird
Lie Ryan
lie.1296 at gmail.com
Mon Dec 26 04:28:14 EST 2011
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)
More information about the Python-list
mailing list