|
From: Paul H. <pmh...@gm...> - 2013-09-30 23:21:00
|
On Mon, Sep 30, 2013 at 1:43 PM, KURT PETERS <pet...@ms...> wrote:
> I'm including the code below to demonstrate the problem. The top should
> have simtimedata (0 through 28) labeling the points. As you can see,
> MATPLOTLIB just distributes those values evenly instead of assigning them
> properly.
> Any ideas?
>
> #!/usr/bin/env python
> import numpy as np
> from matplotlib import rc
> import matplotlib.pyplot as plt
> import matplotlib.mlab as mlab
> import re
> from matplotlib.ticker import EngFormatter
> xdat=np.arange(1,11)
> simtimedata = np.array([0, 1, 5, 9, 13, 18, 21, 24, 25, 28])
> idatanp = np.array([-1,0, 1, 2, 3, 2, 1, 0, -1, -2])
> print idatanp.shape
> print simtimedata.shape
> print xdat.shape
> fig = plt.figure()
>
> ax1 = fig.add_subplot(211)
> ax1.plot(xdat,idatanp)
> ax2 = fig.add_subplot(212)
> #ax1.plot(x1, x1,'b--')
> ax3 = ax2.twiny()
> ax2.plot(xdat, idatanp.real,'k-o')
> ax3.plot(simtimedata, idatanp,'k--',alpha=0)
> ax2.set_title("time domain")
> ax2.grid(True)
> plt.show()
>
> >
> > I'm trying to find a glitch in an FPGA simulation. The data stored in a
> file is:
> > (simulation time, y)
> >
> > In reality, if I plot that I get large gaps because the simulation time
> continues and data is only output periodically. In other words simulation
> time is not continuous. I'd like to view the data without the gaps, but
> with simulation time annotating the x-axis so I can determine where the
> glitch occurs.
> > I've tried a variety of things:
> > #ax1.plot(x1, x1,'b--')
> > #ax3 = ax2.twiny()
> > ax2.set_xticklabels(simtimedata, fontdict=None, minor=False, rotation =
> 45)
> > ax2.plot( idatanp.real,'k--',idatanp.imag,'g.-')
> > #ax2.plot(xdat, idatanp.real,'k--',xdat,idatanp.imag,'g.-')
> > #ax3.plot(simtimedata, idatanp.real,'k--',alpha=0)
> >
> > but cannot get the axis to both show the data all together AND show
> where the glitch occurs. I thought the twiny might help to put another x
> axis up so I could plot the data first with the x axis incrementing based
> on when the data is read in, and then trying to place labels showing
> simulation time.
> >
> > Does anyone have any ideas how I could do this?
> > Kurt
>
Kurt,
You need to show ax3's xticklabels somewhere. Like this:
import numpy as np
from matplotlib import rc
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
import re
from matplotlib.ticker import EngFormatter
xdat=np.arange(1,11)
simtimedata = np.array([0, 1, 5, 9, 13, 18, 21, 24, 25, 28])
idatanp = np.array([-1,0, 1, 2, 3, 2, 1, 0, -1, -2])
fig = plt.figure()
ax1 = fig.add_subplot(211)
ax1.plot(xdat,idatanp)
ax2 = fig.add_subplot(212)
ax3 = ax2.twiny()
ax2.plot(xdat, idatanp.real,'k-o')
ax3.plot(simtimedata, idatanp,'k--',alpha=0)
# ---- show ax3's xticklabels
ax3.xaxis.tick_top()
ax2.set_title("time domain")
ax2.grid(True)
fig.tight_layout()
|