Produkuję jakościową publikację do osadzenia w lateksie i chciałbym być bardzo dokładny pod względem rozmiarów i czcionek (aby czcionki są tego samego rozmiaru w artykule, co w działce). Aby zapobiec skalowaniu lateksu, chciałbym mieć dokładny rozmiar, ale nie mogę. Oto mój kod:pad_inches = 0 i bbox_inches = "tight" powodują, że wykres jest mniejszy niż zadeklarowany figsize
import matplotlib.pyplot as plt
from matplotlib import rc, rcParams
from numpy import sin
rc('text', usetex=True)
rc('font', family='serif', serif='Computer Modern Roman', size=8)
rc('legend', fontsize=10)
width_in = 5
fig = plt.figure(1, figsize=(width_in, 2))
ax = fig.add_subplot(111)
ax.plot(range(0,100), sin(range(0,100)))
fig.tight_layout()
fig.savefig('test.eps', bbox_inches='tight', pad_inches=0)
plt.close()
Problem dotyczy bbox_inches = "tight" i pad_inches = 0. Dodanie tych opcji powoduje, że mój wykres ma szerokość 4,76 cali zamiast zadeklarowanych 5 cali. Ale chcę, żeby oszczędzali miejsce. Jak go rozwiązać?
Edytuj: Cóż, odpowiedzi sugerują usunięcie bbox_inches='tight'
i pad_inches=0
i użycie tylko tight_layout()
. Obrazy mają odpowiednią wielkość, ale wciąż mają trochę białego obicia. Mogę go usunąć za pomocą fig.tight_layout(pad=0)
, ale wtedy tytuł figurki został przeniesiony do pudełka, które wygląda brzydko. Z drugiej strony mogę użyć tight_layout(rect=[...])
i uzyskać pożądany wynik, ale jest to praca ręczna, aby uzyskać prawidłowe liczby - nie podoba mi się to. Dlatego obecnie nie widzę łatwego i ogólnego rozwiązania mojego problemu.
Mam następujące pytanie: Mam tekst powyżej domyślnego bboxa, więc jeśli zapiszę go bezpośrednio, tekst zostanie przycięty. Jeśli użyję opcji bbox_inches = 'tight', marginesy na rysunku zostaną obcięte. Czy istnieje sposób na wykonanie tylko bbox_inches = "tight" w kierunku pionowym? –
Następnie zadaj nowe pytanie – tacaswell
Dzięki! Zrobiłem i to jest tutaj: http://stackoverflow.com/questions/23532036/showing-text-outside-the-figure-limits –