我正在使用以下命令绘制一个带有图例的图形:
K = [1e3,1e4] plt.plot(x[:len(y1)], y1, 'o', label=f'Simulation ($K_L$={K[i]:0e})')
字符串其产生以下图形:
的数据但我希望图例采用如下所示的特定格式:
KL = 103
gg58donl1#
那这个呢(this answer)。
import matplotlib.pyplot as plt def sci_notation(number: float, n_decimals: int = 2) -> str: sci_notation = f"{number:e}" decimal_part, exponent = sci_notation.split("e") decimal_part = float(decimal_part) exponent = int(exponent) if decimal_part == 1.0: return f"$10^{exponent}$" else: return f"{decimal_part:.{n_decimals}f}x$10^{exponent}$" K = [1e3, 1.323423e4] plt.plot([], [], "o", label=f"Simulation ($K_L$={sci_notation(K[0])})") plt.plot([], [], "o", label=f"Simulation ($K_L$={sci_notation(K[1])})") plt.legend() plt.show()
字符串
的数据
irlmq6kh2#
如果您的图例是硬编码的,则可以执行以下操作:
import numpy as np import matplotlib.pyplot as plt K = [1e3,1e4] # hardcoded legend x = np.random.rand(100) y1 = np.random.rand(100) plt.plot( x[:len(y1)], y1, 'o', label=f'Simulation ($K_L$=$10^{int(np.log10(K[0]))}$)' ) plt.legend()
字符串这里你的K的log10被手动放入指数中(上标)。此外,还有一个scinot包,它可能有助于您更灵活地格式化
scinot
import scinot as sn a=1.7e-2 print(scinot.format(a)) 1.7 × 10⁻²
型
2条答案
按热度按时间gg58donl1#
那这个呢(this answer)。
字符串
的数据
irlmq6kh2#
如果您的图例是硬编码的,则可以执行以下操作:
字符串
这里你的K的log10被手动放入指数中(上标)。
此外,还有一个
scinot
包,它可能有助于您更灵活地格式化型