Ho un grafico il cui angolo superiore sinistro è abbastanza vuoto. Quindi decido di mettere lì la mia scatola della leggenda.
Tuttavia, trovo che gli oggetti nella legenda siano molto piccoli e anche la scatola della legenda sia abbastanza piccola.
Con "piccolo", intendo qualcosa del genere
Come posso ingrandire gli elementi (non i testi!) nella casella della legenda?
Come posso ingrandire la scatola stessa?
- Sibbs Gambling
Per controllare il riempimento all'interno della legenda (ingrandendo effettivamente la casella della legenda) usa il borderpad
kwarg.
Ad esempio, ecco l'impostazione predefinita:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
fig, ax = plt.subplots()
for i in range(1, 6):
ax.plot(x, i*x + x, label='$y={i}x + {i}$'.format(i=i))
ax.legend(loc='upper left')
plt.show()
Se cambiamo il riempimento interno con borderpad=2
, ingrandiremo la casella della legenda complessiva (le unità sono multipli della dimensione del carattere, simile a
em
In alternativa, potresti voler cambiare la spaziatura tra gli elementi. Usa import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
fig, ax = plt.subplots()
for i in range(1, 6):
ax.plot(x, i*x + x, label='$y={i}x + {i}$'.format(i=i))
ax.legend(loc='upper left', borderpad=2)
plt.show()
per controllare questo:
labelspacing
Nella maggior parte dei casi, tuttavia, ha più senso regolare contemporaneamente import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
fig, ax = plt.subplots()
for i in range(1, 6):
ax.plot(x, i*x + x, label='$y={i}x + {i}$'.format(i=i))
ax.legend(loc='upper left', labelspacing=2)
plt.show()
e labelspacing
:
borderpad
D'altra parte, se hai marcatori molto grandi, potresti voler aumentare la lunghezza della linea mostrata nella legenda. Ad esempio, l'impostazione predefinita potrebbe essere simile a questa:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 100)
fig, ax = plt.subplots()
for i in range(1, 6):
ax.plot(x, i*x + x, label='$y={i}x + {i}$'.format(i=i))
ax.legend(loc='upper left', borderpad=1.5, labelspacing=1.5)
plt.show()
Se cambiamo import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 5)
fig, ax = plt.subplots()
for i in range(1, 6):
ax.plot(x, i*x + x, marker='o', markersize=20,
label='$y={i}x + {i}$'.format(i=i))
ax.legend(loc='upper left')
plt.show()
, otterremo righe più lunghe nella legenda, che sembra un po' più realistica. (Sto anche modificando handlelength
e borderpad
qui per dare più spazio.)
labelspacing
Dai documenti, ecco alcune delle altre opzioni che potresti voler esplorare:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 10, 5)
fig, ax = plt.subplots()
for i in range(1, 6):
ax.plot(x, i*x + x, marker='o', markersize=20,
label='$y={i}x + {i}$'.format(i=i))
ax.legend(loc='upper left', handlelength=5, borderpad=1.2, labelspacing=1.2)
plt.show()