I want to plot a scientific title or legend label which is e^(x*10**b).
Here's an example:
import matplotlib.pyplot as plt
data = 5.55e10
plt.title('e$^{%.2e}$'%(data))
CodePudding user response:
Split the formatted string and format them again:
>>> val = 5.55e10
>>> base, power = f'{val:.2e}'.split('e')
>>> f'e$^{{{base}*10^{{{power}}}}}$'
'e$^{5.55*10^{ 10}}$'
Output in matplotlib:
CodePudding user response:
Using a regex:
import matplotlib.pyplot as plt
import re
data = 5.55e10
s = re.sub(r'e([ -]\d )', r'\\cdot{}10^{\1}', f'e$^{{{data:.2e}}}$')
plt.title(s)
CodePudding user response:
you can do that by extracting the base and exp:
import matplotlib.pyplot as plt
from math import log10, floor
def find_exp_base(number):
exp = floor(log10(abs(number)))
return round(number/10**exp, 2), exp
data = 5.55e10
base, exp = find_exp_base(data)
plt.title('e$^{' str(base) '*10^{' str(exp) '}}$')
plt.show()
output :