Seite 1 von 1
Logarithmische Skala
Verfasst: Dienstag 11. August 2020, 11:45
von phenomina1
Hallo,
ich habe die x-Werte [0.2,0.65,0.91,1] und die y-Werte [1,0.999,0.98,0.85]. Ich plotte das ganze mit pyplot und würde die y-Werte gerne so "logarithmisch" anzeigen lassen, dass das ganze einer Gerade zumindest ähnelt, sprich, dass der Abstand zwischen 0.999 und 0.98 optisch ungefähr genauso groß ist, wie der zwischen 0.98 und 0.85. plt.yscale('log') habe ich schon versucht, das klappt nicht so, wie ich es mir vorstelle. Ich freue mich sehr über Hilfe! Danke schon mal!
Re: Logarithmische Skala
Verfasst: Montag 31. August 2020, 08:36
von tonikae
Vielleicht hilft dir das weiter:
Code: Alles auswählen
import matplotlib.pyplot as plt
import numpy as np
fig, ax = plt.subplots(ncols=2,figsize=(10,3))
y_werte = np.array([1,0.999,0.98,0.85])
x_werte = np.arange(len(y_werte))
ax[0].plot(x_werte,y_werte,'Red', linewidth=0.5)
ax[1].semilogx(x_werte, y_werte, 'Blue', linewidth=0.5)
plt.show()
Re: Logarithmische Skala
Verfasst: Montag 31. August 2020, 10:57
von tonikae
Gut ich hab es noch einmal kurz mit allen richtigen X/Y-Werten und allen Darstellungsformen gestrickt.
Code: Alles auswählen
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['toolbar'] = 'None'
fig, ax = plt.subplots(ncols=4, figsize=(18,3))
y_werte = np.array([1,0.999,0.98,0.85])
x_werte = np.array([0.2,0.65,0.91,1])
ax[0].plot(x_werte,y_werte,'Blue', linewidth=0.5)
ax[1].semilogx(x_werte, y_werte, 'Blue', linewidth=0.5)
ax[2].semilogy(x_werte, y_werte, 'Black', linewidth=0.5)
ax[3].loglog(x_werte, y_werte, 'Black', linewidth=0.5)
ax[0].grid(True)
ax[1].grid(True)
ax[2].grid(True)
ax[3].grid(True)
ax[0].set_title('Normal',loc='left')
ax[1].set_title('Log X',loc='left')
ax[2].set_title('Log Y',loc='left')
ax[3].set_title('Log X/Y',loc='left')
ax[0].set_facecolor('Greenyellow')
ax[1].set_facecolor('Aqua')
ax[2].set_facecolor('Lightgrey')
ax[3].set_facecolor('White')
plt.gcf().canvas.set_window_title("Mein Fenstertitel")
plt.gcf().patch.set_facecolor('Green')
plt.tight_layout()
plt.show()