Frix, I get the same error for your first example with v1.1.1 [although I had to comment out the med_r = np.median(x_r) to get it to run]. You should probably file a bug at [1].
I get the same result for your yaxis. You need to change the formatter to ax.yaxis.set_major_formatter(plt.ScalarFormatter(useOffset=False)) -Sterling [1] https://github.com/matplotlib/matplotlib/issues On Mar 27, 2013, at 7:09AM, Hackstein wrote: > Sterling, > > I'm using matplotlib version 1.2.0 with agg backend. > > Here are two code examples, one for each problem. The first one doesn't save > the figure due to the legend problem, seterr causes the script to stop with > an error at that position. > The second example shows the scientific labels on the y-axis, although it > should be disabled in the code. I can't get the y-axis to display plain > labels. > > First example: > [code] > import numpy as np > np.seterr(all='raise') > import matplotlib.pyplot as plt > > x_i = [11.7574075935, 11.665207135799999, 11.6762413105, 11.6580992311, > 11.656368388500001] > x_r = [] > dates = [2.83611000e-01, 2.69330463e+02, 2.70280648e+02, > 2.71359248e+02, 2.72320822e+02] > > diff = 0.16 > ra = [0., 110.5349726] > dec = [0., -16.1061281] > med_i = np.median(x_i) > med_r = np.median(x_r) > > plt.figure("i_only", figsize=(14.40, 9.00), dpi=100) > if x_r == []: > plt.plot(dates, np.asarray(x_i), 'r-', label = 'i_s') > plt.title('i_mag', fontsize='16') > else: > plt.plot(dates, np.asarray(x_r), 'g-', label = 'r_s') > plt.plot(dates, np.asarray(x_i), 'r-', label = 'i_s') > plt.title('i_mag', fontsize='16') > plt.rcParams['xtick.major.pad']=10 > plt.rcParams['ytick.major.pad']=10 > ax = plt.gca() > ax.title.set_y(1.1) > formy = plt.ScalarFormatter() > formy.set_powerlimits((-5, 5)) > formy.set_scientific(False) > ax.yaxis.set_major_formatter(formy) > ax.set_ylim(ax.get_ylim()[::-1]) > for tick in ax.xaxis.get_major_ticks(): > tick.label.set_fontsize(16) > for tick in ax.yaxis.get_major_ticks(): > tick.label.set_fontsize(16) > plt.xlabel('Days', fontsize='20', labelpad=20) > plt.ylabel('normalized magnitude / mag', fontsize='20', labelpad=20) > > if x_r == []: > plt.legend(bbox_to_anchor=(0., 1.02, 1., 0.102), loc=3, mode='expand', > numpoints=1, ncol=2, borderaxespad=0.) > else: > plt.legend(bbox_to_anchor=(0., 1.02, 1., 0.102), loc=3, mode='expand', > numpoints=1, ncol=2, borderaxespad=0.) > leg = plt.gca().get_legend() > ltext = leg.get_texts() > plt.setp(ltext, fontsize='16') > plt.savefig('lc0.png', facecolor='white', bbox_inches='tight') > plt.close("i_only") > [/code] > > Second example: > [code] > import numpy as np > import matplotlib.pyplot as plt > > y_i = [11.1044563514, 11.1228276748, 11.1361234115, 11.1298162168, > 11.125134152199999] > y_r = [11.148667168999999, 11.10194503, 11.112352465300001, > 11.111687871799999, 11.1214449011] > dates_i = [2.83611000e-01, 2.69330463e+02, 2.70280648e+02, > 2.72320822e+02, 2.73250579e+02] > dates_r = [311.28215, 324.25844, 325.25194, 330.20983, 338.21356] > > diff = 0.16 > ra = [112.5379659, 110.5349726] > dec = [ -15.9841039, -16.1061281] > med_i = np.median(y_i) > med_r = np.median(y_r) > > plt.figure("i_only", figsize=(14.40, 9.00), dpi=100) > if y_r == []: > plt.plot(dates_i, np.asarray(y_i), 'r-', label = 'i_s') > plt.title('i_mag', fontsize='16') > else: > plt.plot(dates_r, np.asarray(y_r), 'g-', label = 'r_s') > plt.plot(dates_i, np.asarray(y_i), 'r-', label = 'i_s') > plt.title('i_mag', fontsize='16') > plt.rcParams['xtick.major.pad']=10 > plt.rcParams['ytick.major.pad']=10 > ax = plt.gca() > ax.title.set_y(1.1) > formy = plt.ScalarFormatter() > formy.set_powerlimits((-5, 5)) > formy.set_scientific(False) > ax.yaxis.set_major_formatter(formy) > ax.set_ylim(ax.get_ylim()[::-1]) > for tick in ax.xaxis.get_major_ticks(): > tick.label.set_fontsize(16) > for tick in ax.yaxis.get_major_ticks(): > tick.label.set_fontsize(16) > plt.xlabel('Days', fontsize='20', labelpad=20) > plt.ylabel('normalized magnitude / mag', fontsize='20', labelpad=20) > > if y_r == []: > plt.legend(bbox_to_anchor=(0., 1.02, 1., 0.102), loc=3, mode='expand', > numpoints=1, ncol=2, borderaxespad=0.) > else: > plt.legend(bbox_to_anchor=(0., 1.02, 1., 0.102), loc=3, mode='expand', > numpoints=1, ncol=2, borderaxespad=0.) > leg = plt.gca().get_legend() > ltext = leg.get_texts() > plt.setp(ltext, fontsize='16') > plt.savefig('lc0.png', facecolor='white', bbox_inches='tight') > plt.close("i_only") > [/code] > > Best regards, > > frix > > > Am 26.03.2013 um 20:36 schrieb Sterling Smith <smit...@fusion.gat.com>: > >> Frix, >> >> It may be useful to post the version and backend you are using to the list. >> >> import matplotlib >> print matplotlib.__version__ >> print matplotlib.get_backend() >> >> Also, if you can format the code as a simple self-contained example, that >> would help others confirm what you are seeing. >> >> -Sterling >> >> On Mar 26, 2013, at 12:01PM, Hackstein wrote: >> >>> Hello everyone, >>> >>> I have two issues with my current projects: >>> >>> 1) I automatically generate plots of several data sets in a for-loop, all >>> of which have the same shape of x and y values, but some of which have two >>> of those data (i.e. graphs) sets per figure, others have only one. >>> I create the legend by >>> >>> plt.legend(bbox_to_anchor=(0., 1.02, 1., 0.102), loc=3, mode='expand', >>> numpoints=1, borderaxespad=0.) >>> >>> which works perfectly if I plot two data sets (and therefore two labels) in >>> a figure, but sometimes (not always) causes an error, if only one data set >>> is plotted in a figure. >>> The legend is this >>> >>> print ax.get_legend_handles_labels() >>> ([<matplotlib.lines.Line2D object at 0x24b9550>], ['i_s']) >>> >>> and the error is >>> >>> File "/usr/lib64/python2.6/site-packages/matplotlib/offsetbox.py", line 76, >>> in _get_packed_offsets >>> sep = (total - sum(w_list)) / (len(w_list) - 1.) >>> FloatingPointError: divide by zero encountered in double_scalars >>> >>> which I broke down to a problem with the" mode='expand'" parameter. It >>> seems it cannot expand when the number of labels is 1. Strangely, however, >>> that seems not always to be the case, since some of the plots with only one >>> data set and one legend entry work without problems, but some raise an >>> error. >>> >>> 2) Another problem occurs with the y-axis tick labels. Even if the y-values >>> are quite ordinary (in the order of 10) the labels get scientific notation >>> when the y-range is small (order 0.1). I don't know why that is and it only >>> occurs then. When the y-range is larger (order of 1), the ticks get plain >>> numbers. I tried to work around that with the following code, which did not >>> work: >>> >>> plt.figure("i_only", figsize=(14.40, 9.00), dpi=100) >>> plt.plot(np.asarray(mod_mjd_list_i), np.asarray(x_i), 'r-', label = 'i_s') >>> ax = plt.gca() formy = plt.ScalarFormatter() formy.set_powerlimits((-5, 5)) >>> formy.set_scientific(False) >>> ax.yaxis.set_major_formatter(formy) >>> >>> Any ideas what I can do? >>> >>> Thanks, >>> frix >>> >>> >>> ------------------------------------------------------------------------------ >>> Own the Future-Intel® Level Up Game Demo Contest 2013 >>> Rise to greatness in Intel's independent game demo contest. >>> Compete for recognition, cash, and the chance to get your game >>> on Steam. $5K grand prize plus 10 genre and skill prizes. >>> Submit your demo by 6/6/13. >>> http://p.sf.net/sfu/intel_levelupd2d_______________________________________________ >>> Matplotlib-users mailing list >>> Matplotlib-users@lists.sourceforge.net >>> https://lists.sourceforge.net/lists/listinfo/matplotlib-users >> ------------------------------------------------------------------------------ Own the Future-Intel® Level Up Game Demo Contest 2013 Rise to greatness in Intel's independent game demo contest. Compete for recognition, cash, and the chance to get your game on Steam. $5K grand prize plus 10 genre and skill prizes. Submit your demo by 6/6/13. http://p.sf.net/sfu/intel_levelupd2d _______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users