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&reg; 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&reg; 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

Reply via email to