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