matplotlib plotten mit logarithmischer Achse

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
xr38
User
Beiträge: 2
Registriert: Dienstag 28. Mai 2019, 10:03

Hallo zusammen.

Ich möchte den Verlauf eines numerischen Experimentes plotten. Den Verlauf, also die erzeugten Werte, speichere ich in einem numpy array ab. Den möchte ich jetzt plotten, wofür eine logarithmische Achse notwendig ist, da ich 10^7 Schritte durchführe. Auch plotte ich nur jeden tausendsten Eintrag des arrays.
Mein Problem ist, dass mit pyplot und auch mit scatter die Punkte die erzeugt werden irgendwann sehr nah aneinander liegen (da ja logarithmische Achse) und einfach eine dicke Linie bilden. Das sieht aber mehr als bescheiden aus.

Gibt es eine Möglichkeit das die Punkte immer kleiner werden bzw der plot immer einen Mindestabstand zwischen den einzelnen Punkten lässt?

Code: Alles auswählen

n=10000000

x = np.linspace(1, n, int(n/1000))
plt.scatter(x, array[0:n:1000],c='k', s=1)
plt.xscale('log')
plt.show()
Üpsilon
User
Beiträge: 225
Registriert: Samstag 15. September 2012, 19:23

Da sich noch niemand geäußert hat, erlaube ich mir, auch hier zu antworten:
Anscheinend kann man bei scatter den Parameter s übergeben, der bestimmt, wie groß die Punkte werden. Anscheinend auch ein Array voller Größen, sodass jeder Punkt eine eigene Größe bekommt, wenn man das unbedingt möchte. Siehe auch: https://stackoverflow.com/questions/148 ... arker-size
Ansonsten würde ich einfach einen ganz normalen Linien-Plot machen, mit plt.plot, anstatt zu scattern. Da werden ja die Punkte nicht extra hervorgehoben.
PS: Die angebotene Summe ist beachtlich.
xr38
User
Beiträge: 2
Registriert: Dienstag 28. Mai 2019, 10:03

Dankeschön. Hat meine Frage beantwortet. :)
Antworten