|
From: Daπid <dav...@gm...> - 2012-07-27 12:13:43
|
In the example you provide, bins is returned by the hist command, whereas in your code, bins is a number that you defined as 20. So, change: bins = 20 plt.hist(C, bins, ... by: nbins = 20 n, bins, patches = plt.hist(C, nbins, ... As a side comment, your data loading is too complex, and fail prone. I suggest you to have a look at the numpy function for that, loadfromtxt or (I like it more), genfromtxt. It would be something like: data=np.genfromtxt(F, delimiter=' ') C=data[:,3] Much easier, and way faster. Regards, David. On Fri, Jul 27, 2012 at 4:13 AM, surfcast23 <sur...@gm...> wrote: > > Hi > I have a code to plot a histogram and I am trying to add a best fit line > following this example > > http://matplotlib.sourceforge.net/examples/pylab_examples/histogram_demo.html > > but run into this error > > Traceback (most recent call last): > File "/home/Astro/count_Histogram.py", line 54, in <module> > l = plt.plot(bins, y, 'r--', linewidth=1) > File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 2467, in > plot > ret = ax.plot(*args, **kwargs) > File "/usr/lib/pymodules/python2.7/matplotlib/axes.py", line 3893, in plot > for line in self._get_lines(*args, **kwargs): > File "/usr/lib/pymodules/python2.7/matplotlib/axes.py", line 322, in > _grab_next_args > for seg in self._plot_args(remaining, kwargs): > File "/usr/lib/pymodules/python2.7/matplotlib/axes.py", line 300, in > _plot_args > x, y = self._xy_from_xy(x, y) > File "/usr/lib/pymodules/python2.7/matplotlib/axes.py", line 240, in > _xy_from_xy > raise ValueError("x and y must have same first dimension") > ValueError: x and y must have same first dimension > > My Code > > import matplotlib.pyplot as plt > import math > import numpy as np > import mpl_toolkits.mplot3d.axes3d > import matplotlib.mlab as mlab > > counts = [] > F = '/home/Astro/outfiles/outmag21_5dr_38_68.txt' > f = open(F) > for line in f: > if line != ' ': > columns = line.split() > count = columns[3] > count = int(count) > counts.append(count) > C = np.array(counts, dtype=float) > > avg = sum(C)/len(C) > diff = C-avg > sigma = np.sqrt((1./len(C))*(diff**2)) > > bins = 20 > plt.hist(C, bins, range=None, normed=False, weights=None, cumulative=False, > bottom=None, histtype='bar', align='mid', orientation='vertical', > rwidth=None, log = False, color=None, label=None) > plt.title("") > plt.text(25,20,'M < -21.5' '\n' 'N Halos 3877' '\n' 'Length Cell 38.68Mpc' > '\n' 'N Cells 269' '\n' 'Avg Halo per Cell 14.35 ') > plt.xlabel("Halos/Cell") > plt.ylabel("Number Cells with N Halos") > y = mlab.normpdf( bins, avg, sigma) > print(len(y)) > l = plt.plot(bins, y, 'r--', linewidth=1) > plt.show() > > > My first question is do x and y refer to the values in l = plt.plot(bins, > y, 'r--', linewidth=1) which for my case are bins and y? > if that is the case how can I get then to be the same first dimension? > -- > View this message in context: http://old.nabble.com/ValueError%3A-x-and-y-must-have-same-first-dimension-tp34218704p34218704.html > Sent from the matplotlib - users mailing list archive at Nabble.com. > > > ------------------------------------------------------------------------------ > Live Security Virtual Conference > Exclusive live event will cover all the ways today's security and > threat landscape has changed and how IT managers can respond. Discussions > will include endpoint security, mobile security and the latest in malware > threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ > _______________________________________________ > Matplotlib-users mailing list > Mat...@li... > https://lists.sourceforge.net/lists/listinfo/matplotlib-users |