Es gab andere Fragen darüber, aber keine scheint meine genaue Frage zu decken/keiner ihrer Lösungen "korrigierte" mein Problem.Matplotlib twinx-Ausrichtung mit yticklabels und yticks
import matplotlib.pyplot as plt
calendar = [[1,0,0,1,1,0,1],[0,0,1,1,1,0,1]]
fig, ax = plt.subplots()
namelist = ['alpha','beta']
yticks = [n for n in range(len(namelist))]
ax.set_yticks(yticks)
ax.set_yticklabels(namelist)
ax2 = ax.twinx()
ax2.set_yticks(ax.get_yticks())
ax2.set_yticklabels(['gamma','delta'])
im = ax.imshow(calendar, interpolation='none', cmap='summer')
plt.show()
Natürlich ist die obere ist nur eine sehr vereinfachte Version, aber es sollte genug sein, um das Problem zu sehen: Wenn die beiden „ax2 Zeilen“ Auskommen die Handlung ist, wie ich will, aber beim Hinzufügen auf der zweiten Y-Achse ändert sich der Plot wie ich es nicht möchte. Ich möchte, dass das Alpha/Beta auf der gleichen Höhe wie Gamma/Delta ist (so dass kein Leerraum übrig bleibt), aber ich versage seit geraumer Zeit. Ich habe versucht, die get_yticks()
Funktion (wie in einigen ähnlichen Fragen vorgeschlagen), aber es hat nicht geholfen. Vielen Dank im Voraus!
EDIT: Ein kleines Detail: Die Lösung sollte "erweiterbar" in dem Sinne sein, dass sie mehr Y-Werte (Alpha, Beta, Delta, ...) mit ihrem Zwillings-Gegenstück vor sich hat.
EDIT 2: (Ich war mir nicht sicher, ob das Posten einer neuen Frage nützlich war, also frage ich einfach hier :) Ich versuche jetzt ein Gitter hinzuzufügen. Ich habe wieder viel probiert, aber nichts scheint mir zu helfen, bestenfalls bekomme ich ein Y-Achsen-Raster. Überprüfen Sie den folgenden Code (und versuchen, das gleiche mit diesen Zeilen unkommentiert!):
import matplotlib.pyplot as plt
calendar = [[1,0,0,1,1,0,1],[0,0,1,1,1,0,1]]
fig, ax = plt.subplots()
namelist = ['alpha','beta']
yticks = [n for n in range(len(namelist))]
ax.set_xticks([num for num in range(len(calendar[0]))])
ax.set_xticks([num-0.5 for num in range(len(calendar[0]))],minor=True)
ax.set_yticks(yticks)
ax.set_yticks([num-0.5 for num in range(len(namelist))],minor=True)
ax.set_yticklabels(namelist)
im = ax.imshow(calendar, interpolation='none', cmap='summer')
ax.set_adjustable('box-forced')
ax.xaxis.grid(which='major',alpha=1,color='k',lw=2)
ax.xaxis.grid(which='minor',alpha=1,color='k',lw=2)
ax.yaxis.grid(which='minor',alpha=1,color='k',lw=2)
#ax2 = ax.twinx()
#ax2.set_yticks(ax.get_yticks())
#ax2.set_yticklabels(['gamma','delta'])
#im2 = ax2.imshow(calendar, interpolation='none', cmap='summer')
#ax2.set_adjustable('box-forced')
plt.show()
Wie kann ich das Gitter bekommen zu zeigen? Hier ein Bild davon wie es ist (ohne ax2). Grundsätzlich sollte mir der Code nicht genau das selbe geben, aber mit dem/den zweiten Label (s) rechts ?!
Danke, das half Ich schon, aber es löst immer noch nicht das Problem des Leerraumes über und unter dem grün/gelben Teil. – famfop
@famfop Oh, ich sehe, gib mir eine Minute ... –
Danke! Große Antwort: kurz und auf dem Punkt! – famfop