Re: Warum boolsche Ergebnisse gemischt mit Integer?
Verfasst: Samstag 23. November 2013, 17:31
@siggi: Ah, ich habe nicht daran gedacht das jemand ernsthaft Python 3 einsetzen könnte. 
Matplotlib ist halt kein Funktionenplotter sondern Plottet tatsächlich die diskreten Werte die man angibt so wie man sie angibt. Für das was Du möchtest müsste man die Funktion analysieren und auch irgendwie entscheiden bis wohin man den Ausschnitt eingrenzt wenn die Werte gegen ±∞ gehen.
Das ungenaue kommt durch die relativ geringe Anzahl der Werte zustande. Statt 100 könnte man auch 1.000 berechnen. Ich vermute mal SmallBasic wird an der Stelle die Anzahl der berechneten Werte mit der Anzahl der Pixel gleichsetzen. Pixel gibt es bei Matplotlib erst wenn tatsächlich die grafische Darstellung ins Spiel kommt. Intern wird das als Vektorgrafik gehandhabt. Als solche kann man das ja auch speichern und dann immer noch verlustfrei skalieren.
Man könnte ein wenig schummeln und Werte die grösser als ein Schwellenwert sind einfach durch NaN ersetzen:
Edit: Punkte statt Linien.
Matplotlib ist halt kein Funktionenplotter sondern Plottet tatsächlich die diskreten Werte die man angibt so wie man sie angibt. Für das was Du möchtest müsste man die Funktion analysieren und auch irgendwie entscheiden bis wohin man den Ausschnitt eingrenzt wenn die Werte gegen ±∞ gehen.
Das ungenaue kommt durch die relativ geringe Anzahl der Werte zustande. Statt 100 könnte man auch 1.000 berechnen. Ich vermute mal SmallBasic wird an der Stelle die Anzahl der berechneten Werte mit der Anzahl der Pixel gleichsetzen. Pixel gibt es bei Matplotlib erst wenn tatsächlich die grafische Darstellung ins Spiel kommt. Intern wird das als Vektorgrafik gehandhabt. Als solche kann man das ja auch speichern und dann immer noch verlustfrei skalieren.
Man könnte ein wenig schummeln und Werte die grösser als ein Schwellenwert sind einfach durch NaN ersetzen:
Code: Alles auswählen
import numpy as np
from matplotlib import pyplot
def main():
x_values = np.linspace(0, 2 * np.pi, 100)
y_values = np.tan(x_values)
y_values[abs(y_values) > 50] = np.nan
pyplot.plot(x_values, y_values, '.')
pyplot.show()