Matplotlib benutzerdefinierter SI-Präfix-Einheiten-Tick-Formatter
English
Deutsch
Du kannst UliEngineerings format_value() verwenden, um einfach einen benutzerdefinierten matplotlib-Tick-Formatter zu erstellen, der Werte mit SI-Präfixen wie k, M, G, T, … formatiert.
Formatieren der Y-Achsen-Ticks
Das folgende Beispiel formatiert die Y-Achse in der Einheit J (Joule). Beispielsweise würde 100000 als 100 kJ formatiert werden.
Die Formatter-Funktion, die wir verwenden, ist
format_joules_fn.py
def format_joules(value, pos=None):
return format_value(value, 'J')Um die Formatter-Funktion zu setzen, verwende
set_y_formatter.py
# Unseren Formatter als Y-Achsen-Formatter setzen
plt.gca().yaxis.set_major_formatter(mtick.FuncFormatter(format_joules))Beispiel:
si_formatter_example.py
import matplotlib.ticker as mtick
from UliEngineering.EngineerIO import format_value
from matplotlib import pyplot as plt
def format_joules(value, pos=None):
return format_value(value, 'J')
# Unseren Formatter als Y-Achsen-Formatter setzen
plt.gca().yaxis.set_major_formatter(mtick.FuncFormatter(format_joules))Formatieren der X-Achsen-Ticks
Um stattdessen die X-Achsen-Ticks zu formatieren, verwende dieselbe Formatter-Funktion, aber aktiviere sie mit
set_x_formatter.py
# Unseren Formatter als Y-Achsen-Formatter setzen
plt.gca().xaxis.set_major_formatter(mtick.FuncFormatter(format_joules))Anzahl der Nachkommastellen festlegen
UliEngineerings format_value() ermöglicht dir, die Nachkommastellen z.B. mit significant_digits=4 festzulegen
format_joules_sigdigits.py
def format_joules(value, pos=None):
return format_value(value, 'J', significant_digits=4)Vollständiges Beispiel
Dieses Beispiel erzeugt den oben gezeigten Y-Achsen-Plot
mpl_si_formatter_full_example.py
import matplotlib.ticker as mtick
from UliEngineering.EngineerIO import format_value
from matplotlib import pyplot as plt
plt.style.use("ggplot")
import numpy as np
def format_joules(value, pos=None):
return format_value(value, 'J')
# Unseren Formatter als Y-Achsen-Formatter setzen
plt.gca().yaxis.set_major_formatter(mtick.FuncFormatter(format_joules))
# Testdaten generieren
test_data = np.arange(1, 1.2e6)
plt.plot(test_data)
plt.gcf().set_size_inches(10,5)
plt.savefig("/ram/mpl-si-formatter.svg")Check out similar posts by category:
Python
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow