Вы можете довольно легко распечатать символ квадратного корня, используя LaTex в maplotlib, т.е.
s = 2
plt.plot(x, y, label=r'$\sqrt{{{}}}$'.format(s))
Сложная часть, конечно, заключается в использовании правильных коэффициентов и корней, это проще, если вы возьметеНемного другой подход к генерации x
, что-то вроде этого
import matplotlib.pyplot as plt
import numpy as np
E = np.linspace(50000,200000,1000) # eV
a = 3.615*10**(-10) #m
h = 6.582*10**(-16) #eV s
m = 9.109*10**(-31) #kg
J = 6.242*10**(-18) #1eV to J
def T(x,E):
return np.arcsin(x*np.sqrt(J*((np.pi**2 *h**2)/(a**2 * 4*m *E))))*1000
fig, ax = plt.subplots()
k = [(2, 2), (2, 1), (1, 3)]
x = list()
labels = list()
for i in range(len(k)):
x.append(k[i][0] * np.sqrt(k[i][1]))
if k[i][0] == 1 and k[i][1] != 1:
labels.append(r'hkl=$\sqrt{{{}}}$'.format(k[i][1]))
elif k[i][0] != 1 and k[i][1] == 1:
labels.append(r'hkl=${{{}}}$'.format(k[i][0]))
elif k[i][0] != 1 and k[i][1] != 1:
labels.append(r'hkl=${{{}}}\sqrt{{{}}}$'.format(k[i][0], k[i][1]))
else:
labels.append('hkl=1')
for i in range(len(x)):
ax.plot(E,T(x[i],E),label=labels[i])
plt.ylabel('$\Theta$ (mrad)')
plt.xlabel('Energy (eV)')
plt.legend(bbox_to_anchor=(0.99, 0.98), loc=1, borderaxespad=0.)
. Для создания x
и произвольной печати символов квадратного корня потребуются любые значения (хотя я уверен, что есть более эффективные способы сделать это).)
