matplotlib: figlegend efsane yükseltme 1.1.x Matplotlib için sonra boş kutu

oy
0

Bizim matplotlib sürümünü yükselttikten sonra, şimdi kullanarak boş efsaneleri olsun figlegend(). Sadece çok gibi boş bir kutu görüntüler:

Burada

Gördüğüm bu ve bu , ama ikisi de şimdiye kadar bana çok yardımcı oldu.

Ben fonksiyonunu kullanıyorum

handles, labels = ax.get_legend_handles_labels()

ve bu daha önce iyi çalıştı. beklendiği gibi diğer her şey çalışır.

Ben biz efsaneleri ele nasıl gerçekleştiğini gösterir umut koddan çok soyunmuş alıntı dahil ettik.

figprops = dict(figsize=(gsp.plotSizeX, gsp.plotSizeY), dpi=gsp.plotSizeDPI, facecolor='#FFFFFF', edgecolor='#000000', linewidth=0.5, frameon=True)
fig = plt.figure(**figprops)
fig.autofmt_xdate(bottom = 0.2, rotation = 30, ha='right')
canvas = FigureCanvas(fig)

legHandles = []
legText = []
font= FontProperties(size='xx-small')

hostPlots = []

pcount = len(gsp.subPlots)
pn = 111

if pcount > 1:
   for i in range(1, pcount + 1):
      pn = pcount * 100 + (1 * 10) + i
      if i > 1:
          hostPlots.append(host_subplot(pn, axes_class = AA.Axes, sharex = hostPlots[0]))
      else:
          hostPlots.append(host_subplot(pn, axes_class = AA.Axes))
else:
   hostPlots.append(host_subplot(pn, axes_class = AA.Axes))

adjustprops = dict(bottom=0.10, right=0.70, wspace=0.2, hspace=0.2)       # Subplot properties
fig.subplots_adjust(**adjustprops)

spno = 0

for sp in gsp.subPlots:
   series = 0
   axes_offset = 0

   minTicks = sp.axes[0].minTicks
   majTicks = sp.axes[0].majTicks

   for a in sp.axes:
      if series == 0:
         ax = hostPlots[sp.plotNo-1]
         p, = ax.plot_date(plotDate, y, 'k', linewidth = a.lineWidth, color = a.lineColor, label = a.axesLabel, linestyle = a.lineType)

         h, l = ax.get_legend_handles_labels()
         legHandles.append(h)
         legText.append(a.axesLegend)
      else:   # if plotType = 'paraPlot' or plotType = 'subPlot'
         ax = hostPlots[sp.plotNo-1].twinx()
         p, = ax.plot_date(plotDate, y, 'k', linewidth = a.lineWidth, color = a.lineColor, label = a.axesLabel, linestyle = a.lineType)

         h, l = ax.get_legend_handles_labels()
         legHandles.append(h)
         legText.append(a.axesLegend)

         trans = transforms.blended_transform_factory(ax.transData, ax.transAxes)
         rect = patches.Rectangle((dtn, 0), width=1, height=1,transform=trans, color='yellow', alpha=0.333)

         ax.add_patch(rect)
      series += 1
   spno += 1

   pl = hostPlots[spno-1]
   box = pl.get_position()
   pl.set_position([box.x0, box.y0 + box.height * 0.1, box.width, box.height * 0.85])

ax = hostPlots[0]
ax.set_title( gsp.plotName)  #'Time series Data from CWMS Web Service')

if gsp.tightLayout:
    plt.tight_layout(pad=0.4, w_pad=0.5, h_pad=1.0)

figlegend(legHandles, (legText,), 'upper center', bbox_to_anchor=(0.40, 0.07), prop=font, ncol=2)

Başkasının / görülme kullanarak yükselttikten sonra aynı sorunu sabit Has get_legend_handles_labels()ve figlegend()?

Oluştur 13/08/2013 saat 21:46
kaynak kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
0

Bu beklendiği gibi davranır:

ax = gca()
plot(range(15), label='test')
h, l = ax.get_legend_handles_labels()
figlegend(h, l, 'upper center')

yöneticisinde. Başka bir şey Kodunuzdaki bozuldu, sanıyorum

 legText.append(a.axesLegend)

bu hat

Cevap 14/08/2013 saat 00:18
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more