2016-04-16 5 views
0

die folgende Tabelle mit matplotlib hergestellt Anbetracht 1.1.1:Difference Between xlim/ylim und Achsengrenzen

enter image description here

ax.get_ylim = (30, 90). Wenn ich den folgenden Code ausführen:

ax.plot_date(dates_to_plot, y_obs2) 
foo = ax.get_ylim() 
ax.fill_between(dates_to_plot, foo[0], y_obs2) 

die Füllung zwischen y_obs2 (die blaue freeze Linie) und 30 -, die erwartet wird. Was ich will, ist zwischen y_obs2 und 20 (oder was auch immer die untere Grenze für das Diagramm zu dieser Zeit.)

Wenn ich ersetzen foo[0] mit einfach nur 0, die Fläche unterhalb der horizontalen Linie zu füllen vollständig gefüllt ist, aber das ist nicht optimal, weil die untere Grenze des Diagramms auf 0 geändert wird. Außerdem kann y_obs1 (die Temperatur) negativ werden (leider!). Ich konnte keine Methode finden, um den Bereich zwischen der y_obs2-Linie und der unteren Grenze des Diagramms zu füllen - was auch immer es sein mag.

Gibt es eine Methode, die ich sehe nicht, dass ein Tupel der des Diagramms außerhalb Grenzen bieten kann?

Antwort

0

Sie möchten die Ylimits auto=False einstellen, um sicherzustellen, dass sie nicht neu berechnet werden, wenn Sie die geplotteten Daten ändern.

ax.plot_date(dates_to_plot, y_obs2) 

# Get the current ylims 
foo = ax.get_ylim() 

# Prevent the axes ylims from changing automatically with new plots 
ax.set_ylim(auto=False) 

ax.fill_between(dates_to_plot, foo[0], y_obs2) 

# You can always manually specify the ylims as well 
# ax.set_ylim((lower, upper)) 
+0

Danke dafür. Es wäre etwas, das ich nicht in Betracht gezogen hätte - etwas sich selbst gleichzusetzen - aber es funktioniert. Sehr geschätzt. – DaveL17

+0

@ DaveL17 Das ist ein Weg. Ich habe es nur mit einem logischeren Weg aktualisiert – Suever

+0

Das klärt Dinge. Das gibt effektiv die Freiheit, Ylim auf das zu setzen, was ich will. Prost. – DaveL17