简体   繁体   English

如何将十次方的字符串绘制为指数?

[英]How to plot the string with power of ten as the exponential?

I want to plot a scientific title or legend label which is e^(x*10**b).我想绘制一个科学标题或图例标签,即 e^(x*10**b)。

Here's an example:这是一个例子:

import matplotlib.pyplot as plt

data = 5.55e10

plt.title('e$^{%.2e}$'%(data))

And, the actual output is:而且,实际输出是: 真实的

The preferred output is:首选输出是: 回答

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: matplotlib 中的输出:

在此处输入图像描述

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)

output:输出: 在此处输入图像描述

you can do that by extracting the base and exp:您可以通过提取基数和 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 :输出 :

在此处输入图像描述

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM