Como faço para limitar o tamanho da borda em um gráfico matplotlib?
-
05-07-2019 - |
Pergunta
Eu estou fazendo alguns grandes gráficos, e o espaço em branco na fronteira está a ocupar uma grande quantidade de pixels que seriam melhor utilizados pelos dados. Parece que a fronteira cresce à medida que o gráfico cresce.
Aqui estão as entranhas do meu código gráficos:
import matplotlib
from pylab import figure
fig = figure()
ax = fig.add_subplot(111)
ax.plot_date((dates, dates), (highs, lows), '-', color='black')
ax.plot_date(dates, closes, '-', marker='_', color='black')
ax.set_title('Title')
ax.grid(True)
fig.set_figheight(96)
fig.set_figwidth(24)
Existe uma maneira de reduzir o tamanho da fronteira? Talvez um lugar configuração que me permita manter a fronteira em uma constante de 2 polegadas ou assim?
Solução
Uma vez que parece que você está apenas usando uma única subtrama, você pode querer ignorar add_subplot
e ir direto para add_axes
. Isto irá permitir que você dê o tamanho dos eixos (em coordenadas figura-relativa), para que você possa torná-lo tão grande quanto você quer dentro da figura. No seu caso, isso significaria o seu código seria algo parecido
import matplotlib.pyplot as plt
fig = plt.figure()
# add_axes takes [left, bottom, width, height]
border_width = 0.05
ax_size = [0+border_width, 0+border_width,
1-2*border_width, 1-2*border-width]
ax = fig.add_axes(ax_size)
ax.plot_date((dates, dates), (highs, lows), '-', color='black')
ax.plot_date(dates, closes, '-', marker='_', color='black')
ax.set_title('Title')
ax.grid(True)
fig.set_figheight(96)
fig.set_figwidth(24)
Se você quiser, você pode até mesmo colocar os parâmetros para set_figheight
/ set_figwidth
diretamente na chamada figure()
.
Outras dicas
Tente o subplots_adjust
API:
subplots_adjust (* args, kwargs **)
fig.subplots_adjust (esquerda = None, inferior = None, certo = None, wspace = None, hspace = None)
Atualize os SubplotParams com kwargs (inadimplentes para rc onde None) e atualizar os locais subtratamentos