Ich möchte Leerraum in meiner Figur minimieren. Ich habe eine Reihe von Sub-Plots, wo vier Plots ihre y-Achse teilen und das letzte Plot eine separate Achse hat. Es gibt keine Labels oder Tickletiketten für die gemeinsamen Achsenmittelfelder.anpassen Matplotlib Subplot Abstand nach Tight_layout
tight_layout
schafft viel Leerraum zwischen den mittleren Plots, als ob man Platz für Tick-Labels und Ylabels lassen würde, aber ich würde lieber die Subplots dehnen. Ist das möglich?
import matplotlib.gridspec as gridspec
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
fig = plt.figure()
gs = gridspec.GridSpec(1, 5, width_ratios=[4,1,4,1,2])
ax = fig.add_subplot(gs[0])
axes = [ax] + [fig.add_subplot(gs[i], sharey=ax) for i in range(1, 4)]
axes[0].plot(np.random.randint(0,100,100))
barlist=axes[1].bar([1,2],[1,20])
axes[2].plot(np.random.randint(0,100,100))
barlist=axes[3].bar([1,2],[1,20])
axes[0].set_ylabel('data')
axes.append(fig.add_subplot(gs[4]))
axes[4].plot(np.random.randint(0,5,100))
axes[4].set_ylabel('other data')
for ax in axes[1:4]:
plt.setp(ax.get_yticklabels(), visible=False)
sns.despine();
plt.tight_layout(pad=0, w_pad=0, h_pad=0);
Dank! das sieht besser aus, aber es gibt bereits eine erhebliche Überlappung des letzten Zeichens mit den Balken des vorletzten Feldes. Ich hatte gehofft, dass es eine Möglichkeit geben würde, nur dieses letzte Panel mehr horizontalen Raum zu geben? – jlarsch
das Problem wird tatsächlich schlimmer mit größerer Schriftgröße als in meinem Beispiel – jlarsch
Yeah. Ich bin mir nicht sicher, ob du das kannst (zumindest weiß ich nicht von oben). Es kann eine nicht-triviale Lösung geben, die jemand anders kennen könnte. Eine Arbeit um _could_ könnte sein, Ihre Zecken und Etiketten der letzten Handlung auf die rechte Seite zu bewegen? – DavidG