from numpy import*
from matplotlib.pyplot import*
N=[0,1,2,3,4]
s=0.5
hw=1
def Energy(n):
if n%2==0:
if n==0:
j=0.5
E=[(n+1.5)*hw-0.1*(j-0.5)*0.5-0.0225*(j+0.5)*(j-0.5)]
return(E)
else:
l=list(range(0,n+2,2))
j1=[abs(l+s) for l in l ]
j2=[l-s for l in l]
j2=list(filter(lambda x:x>0,j2))
E1=[(n+1.5)*hw-0.1*(j-0.5)*0.5-0.0225*(j+0.5)*(j-0.5) for j in j1]
E2=[(n+1.5)*hw+0.1*(j+0.5)*0.5-0.0225*(j+0.5)*(j-0.5) for j in j2]
return(E1+E2)
else:
l=list(range(1,n+2,2))
j1=[abs(l+s) for l in l]
j2=[abs(l-s) for l in l]
E1=[(n+1.5)*hw-0.1*(j-0.5)*0.5-0.0225*(j+0.5)*(j-0.5) for j in j1]
E2=[(n+1.5)*hw+0.1*(j+0.5)*0.5-0.0225*(j+0.5)*(j-0.5) for j in j2]
return(E1+E2)
E=[]
for n in N:
E.extend(Energy(n))
E.sort()
print(E)
orbital=[r'$1s_{1/2}$',r'$1p_{3/2}$',r'$1p_{1/2}$',r'$1d_{5/2}$',r'$2s_{1/2}$',r'$1d_{3/2}$',r'$1f_{7/2}$',r'$2p_{3/2}$',r'$1f_{5/2}$',r'$2p_{1/2}$',r'$1g_{9/2}$',r'$2d_{5/2}$',r'$1g_{7/2}$',r'$3s_{1/2}$',r'$2d_{3/2}$']
x = arange(len(E))
fig, ax =subplots()
ax.scatter(x, E, s=900, marker="_", linewidth=2, zorder=3)
ax.grid(axis='y')
for xi,yi,tx in zip(x,E,orbital):
ax.annotate(tx, xy=(xi,yi), xytext=(7,-3), size=5,
ha="center",va='top', textcoords="offset points")
ax.margins(0.1)
ylabel('energy >>')
title('Nuclear Energy levels')
Выходные данные представляют собой график, содержащий уровни энергии, но распределенный параллельно оси X.
Что мне действительно нужно, так это уровни, которые не должны распределяться между собой. Я хочу, чтобы они были в стопке, один поверх другого. Я попытался изменить этот код для этого, но безрезультатно. Может ли кто-нибудь помочь с этим?
У меня есть код, который дает мне разные уровни энергии. Код и вывод показаны здесь: [code]from numpy import* from matplotlib.pyplot import*
N=[0,1,2,3,4]
s=0.5 hw=1 def Energy(n):
if n%2==0: if n==0: j=0.5 E=[(n+1.5)*hw-0.1*(j-0.5)*0.5-0.0225*(j+0.5)*(j-0.5)] return(E) else: l=list(range(0,n+2,2)) j1=[abs(l+s) for l in l ] j2=[l-s for l in l] j2=list(filter(lambda x:x>0,j2)) E1=[(n+1.5)*hw-0.1*(j-0.5)*0.5-0.0225*(j+0.5)*(j-0.5) for j in j1] E2=[(n+1.5)*hw+0.1*(j+0.5)*0.5-0.0225*(j+0.5)*(j-0.5) for j in j2] return(E1+E2) else: l=list(range(1,n+2,2)) j1=[abs(l+s) for l in l] j2=[abs(l-s) for l in l] E1=[(n+1.5)*hw-0.1*(j-0.5)*0.5-0.0225*(j+0.5)*(j-0.5) for j in j1] E2=[(n+1.5)*hw+0.1*(j+0.5)*0.5-0.0225*(j+0.5)*(j-0.5) for j in j2] return(E1+E2) E=[] for n in N: E.extend(Energy(n)) E.sort() print(E) orbital=[r'$1s_{1/2}$',r'$1p_{3/2}$',r'$1p_{1/2}$',r'$1d_{5/2}$',r'$2s_{1/2}$',r'$1d_{3/2}$',r'$1f_{7/2}$',r'$2p_{3/2}$',r'$1f_{5/2}$',r'$2p_{1/2}$',r'$1g_{9/2}$',r'$2d_{5/2}$',r'$1g_{7/2}$',r'$3s_{1/2}$',r'$2d_{3/2}$'] x = arange(len(E))
fig, ax =subplots() ax.scatter(x, E, s=900, marker="_", linewidth=2, zorder=3) ax.grid(axis='y')
for xi,yi,tx in zip(x,E,orbital): ax.annotate(tx, xy=(xi,yi), xytext=(7,-3), size=5, ha="center",va='top', textcoords="offset points") ax.margins(0.1) ylabel('energy >>') title('Nuclear Energy levels') [/code] Выходные данные представляют собой график, содержащий уровни энергии, но распределенный параллельно оси X.
Что мне действительно нужно, так это уровни, которые не должны распределяться между собой. Я хочу, чтобы они были в стопке, один поверх другого. Я попытался изменить этот код для этого, но безрезультатно. Может ли кто-нибудь помочь с этим?
У меня есть фоновое изображение (ImageView) поверх этого фона, на котором я хочу поместить лицо ( ImageView) и другое изображение, представляющее собой речевой пузырь, выходящий из лица (ImageView)....
Я начинаю немного изучать Python (использую R) для анализа данных. Я пытаюсь создать два графика с помощью seaborn, но второй сохраняется поверх первого. Как мне остановить такое поведение?
import seaborn as sns
iris = sns.load_dataset('iris')...
Я пытаюсь отслеживать использование батареи моим приложением в Android Studio Iguana 2023.2.1, но не могу найти профилировщик энергии.
Когда я открываю профилировщик сеансе я вижу только параметры для ЦП и ПАМЯТИ