Matplotlib legende plassering

Matplotlib legende plassering

Matplotlib er en flott Python -visualiseringspakke for 2D -matrise -grafer. Legenden er et avsnitt som definerer grafens deler. Legend () er en metode i matplotlib -pakken som brukes til å vise en legende på grafer. LOC -parameteren i legenden () -metoden kan brukes til å indikere legendens plassering. Loc = ”best” er standardverdien (øverst til venstre). Legenden er plassert til den aktuelle plasseringen av figurene med parametrene beste øverst til høyre, øverst til venstre, nede til venstre, høyre, nede, til høyre, midt til venstre, nedre sentrert, midtre høyre og øvre sentrum. Plottlegender gir en visuell kontekst ved implementering av gode til plottkomponentene.

I denne artikkelen, la oss undersøke hvordan du kan tilpasse legendens posisjonering og estetikk i matplotlib.

Legendens plassering

Begrepet 'loc' som en parameter kan brukes til å indikere legendens plassering. I dette tilfellet ser vi metoden for hvordan vi finner legenden.

Importer matplotlib.Pyplot som Plt
Importer numpy som NP
fig, ax_dict = plt.subplot_mosaic ([['topp', 'topp'], ['bunn', 'blank']],
tom_sentinel = "blank")
ax_dict ['topp'].plot ([2, 3, 4], label = "label1")
ax_dict ['topp'].plot ([4, 3, 2], label = "label2")
ax_dict ['topp'].Legend (bbox_to_anchor = (0., 1.02, 1., .102), loc = 'nede til venstre',
NCOL = 2, Mode = "Utvid", Borderaxespad = 0.)
ax_dict ['bunn'].plot ([2, 3, 4], label = "label1")
ax_dict ['bunn'].plot ([4, 3, 2], label = "label2")
ax_dict ['bunn'].Legend (bbox_to_anchor = (1.05, 1),
loc = 'øvre venstre', borderaxespad = 0.)
plt.forestilling()

BBOX_TO_ANCHOR -kommandoen gir oss mye fleksibilitet når det gjelder manuelt å plassere legendene. Hvis vi ønsker at Axes-legenden skal vises i modellens øvre høyre side i stedet for aksenes grense, gir vi ganske enkelt hjørnets posisjon og tredimensjonale posisjon.

En legende settes inn rett utenfor underplottet, og den utvides til. Vi bruker også avgrensningsboksen som er gitt. En legende blir lagt til høyre for den mindre delplottet i den andre grafen.

Spesifiser plasseringsinformasjonen

Plt.Legend () -funksjonen, som automatisk genererer en legende for hvert identifisert plottpunkt, er den enkleste metoden for å utvikle en legende. Imidlertid er det mange metoder for å endre en slik legende. Vi kan definere posisjonen og deaktivere rammen.

Importer matplotlib.Pyplot som Plt
plt.stil.bruk ('klassisk')
Importer numpy som NP
x = np.Linspace (0, 20, 2000)
Fig, AX = PLT.underplott ()
øks.plot (x, np.sin (x), '-b', label = 'sinus')
øks.plot (x, np.cos (x), '-r', label = 'cosine')
øks.Axis ('like')
ben = øks.legende();
øks.Legend (loc = 'øvre venstre', ramme = falsk)
Fig
øks.Legend (Frameon = False, loc = 'Lower Center', NCOL = 3)
Fig
øks.Legend (fancybox = true, Framealpha = 1, Shadow = True, Borderpad = 2)
Fig

For å finne ut antall linjer i legenden, må vi bruke 'NCOL' -kommandoen. Vi legger også til en nyanse, justerer synligheten (alfaverdien) på rammen, eller endrer avstanden rundt innholdet ved å bruke en avrundet boks (Fancybox).

Identifisere legendens elementer

Som standard omfatter legenden alle merkede elementer. Hvis det ikke er det vi vil, vil vi bruke elementene levert av plot-kommandoer for å finjustere hvilke komponenter og titler viser i legenden.

Importer matplotlib.Pyplot som Plt
plt.stil.bruk ('klassisk')
Importer numpy som NP
x = np.Linspace (0, 16, 2000)
Fig, AX = PLT.underplott ()
y = np.sin (x [:, np.newaxis] + np.pi * np.Arange (0, 2, 0.5))
linjer = plt.plot (x, y)
plt.legende (linjer [: 2], ['første', 'andre']);
plt.plot (x, y [:, 0], label = 'First')
plt.plot (x, y [:, 1], etikett = 'andre')
plt.plot (x, y [:, 2:])
plt.Legend (Framealpha = 1, Frameon = True);

Plt.Plot () -funksjonen kan konstruere mange linjer samtidig og gir en liste over linjene som ble dannet. Ved å tilby noen av disse til PLT.Legend (), vi kan indikere hvilke elementer som skal lokaliseres, så vel som etikettene vi vil bruke. Legenden eliminerer alle elementer uten tittelattributt som er gitt som standard.

Flere legender

Når du oppretter et plott, kan det være lurt å inkludere forskjellige legender i samme akse. Matplotlib gjør imidlertid ikke dette enkelt. Vi kan bare konstruere en entall legende for den overordnede plotline ved hjelp av den konvensjonelle legendemetoden.

Hvis vi vil bruke PLT.legende () eller øks.Legend () For å konstruere en andre legende, vil den påkalle den første. Vi kan gjøre dette ved å legge til en legendekunstner fra starten av og deretter eksplisitt legge den nye artisten til plottet som bruker øksen på lavere nivå.Legg til artist () teknikk.

Som vi legger merke til, inneholder metoden bare grunnleggende logikk for å etablere en passende legendekunstner, som deretter vil bli lagret i legenden_attributtet og settes inn i grafen når plottet opprettes.

Utenfor plottet

Vi bruker matplotlib for å forhindre at en legende ramme blir avkortet. Vi bruker BBOX_EXTRA_ARTISTER OG BBOX_INCHES for å sikre at legenden ikke blir beskåret. Bbox_extra -artister indikerer listen over artister som vil bli tatt i betraktning mens de beregner den tette BBOX. Hvis BBOX_INCHES er justert for å være kompakt, vil det bli opprettet en anstrengt Bbox for figuren.

Importer matplotlib.Pyplot som Plt
Importer numpy som NP
x = np.Linspace (0, 20, 3)
y = np.cos (x)
y1 = np.exp (x)
plt.plot (x, y, label = "cos (x)")
plt.plot (x, y1, label = "exp (x)")
legend_outside = plt.Legend (bbox_to_anchor = (1.05, 0.0),
loc = 'nede til høyre')
plt.SaveFig ('Outside_Legend.png ',
DPI = 100,
format = 'png',
bbox_extra_artists = (legend_outside,),
bbox_inches = 'tett')
plt.forestilling()

For visuell analyse integrerer vi matplotlib.Pyplot som Plt. Så, for metadata, inkluderer vi Numpy som NP. Vi bruker linspace (), cos () og exp () -funksjonene for å spesifisere datadimensjoner. Vi bruker plott () -metoden for å tegne grafen. Vi bruker legenden () -funksjonen med BBOX_TO_ANCHOR -argumentet for å legge legenden fra det ytre plottet. Plottet lagres deretter som en PNG -fil ved hjelp av SaveFig () -metoden. Vi gir BBOX_EXTRA_ARTISTS OG BBOX_INCHES ARGUMENTS til SaveFig () -metoden for å unngå legenden fra å bli avkortet.

Konklusjon

Vi lærer noen få metoder for å justere legendens plassering i matplotlib i denne artikkelen. Standardposisjonen for legenden er "Best", dette betyr at Matplotlib vil identifisere en posisjon for legenden som forhindrer å skjule eventuelle datasett. BBOX_TO_ANCHOR () -parameteren kan også brukes til å lokalisere legenden utenfor grafen. I denne artikkelen diskuterte vi også metoden for å knytte forskjellige titler til komponentene i plottet som vi ønsker å vise på legenden. Legendens standardverdier er noen ganger ikke nok for en bestemt visualisering. Da vil vi kanskje bruke verdier av punkter for å illustrere spesifikke aspekter av dataene, så vi må bygge en legende for å representere dette. Videre kan hver legende sted indikeres.