Seite 1 von 1

matplotlib plotten mit logarithmischer Achse

Verfasst: Dienstag 28. Mai 2019, 10:26
von xr38
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()

Re: matplotlib plotten mit logarithmischer Achse

Verfasst: Dienstag 28. Mai 2019, 19:24
von Üpsilon
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.

Re: matplotlib plotten mit logarithmischer Achse

Verfasst: Dienstag 28. Mai 2019, 20:09
von xr38
Dankeschön. Hat meine Frage beantwortet. :)