Как построить плотность состояний DOS с помощью гистограммы? - PullRequest
0 голосов
/ 13 мая 2019

Я хочу построить плотность состояний (DOS), используя гистограмму.Dos определяется как отсутствие состояний в единичном интервале энергии $dN/dE$.У меня есть энергетические ценности.График DOS строится ч / б Энергия (по оси X) и DOS (по оси Y).Единицы DOS 1 / Энергия.Но гистограмма не имеет единиц измерения, но я хочу получить единицы 1 / энергии по оси Y.Если я разделю количество (каждого бина) на их ширину, могу ли я получить единицы 1 / энергию в случае гистограммы?

`E = np.array([-1.61032636, -1.23577245, -0.50587484, -0.28348457, 
                 -0.18748945,  0.4537447,   1.2338455,   2.13535718])

n,bins,patches = plt.hist(E,bins=4)
print("n: ",n)
print("bins: ",bins)
plt.savefig("./DOS")`

1 Ответ

0 голосов
/ 13 мая 2019

Когда вы решите нарисовать гистограмму, вы хотите построить все значения, содержащиеся в интервале.Если я хорошо понимаю, вы хотите посчитать все значения e согласно списку Data.Если вам не ясно с этим, посмотрите здесь .

Data определит, в каком интервале вы хотите посчитать значения e.Параметр bin (doc) дает вам такую ​​возможность.Также «лучше» сортировать данные.Если вы не сортируете Data, это означает, что интервалы могут перекрываться, и вы можете считать значения в нескольких интервалах.(Если вы не сортируете это, это работает. Я не уверен, что это то, что вы хотите, зависит от вашей работы).Здесь я отсортировал Data.Вы можете попробовать оба!

Вот пример:

# Import module
import numpy as np
import matplotlib.pyplot as plt
Data = np.array([-1.61032636, -1.23577245, -0.50587484, -0.28348457,
                 -0.18748945, 0.4537447, 1.2338455, 2.13535718])
Data.sort()
print(Data)
# [-1.61032636 - 1.23577245 - 0.50587484 - 0.28348457 - 0.18748945  0.4537447
#   1.2338455    2.13535718]

# Just in order you get the same plot
np.random.seed(2019)
# Assuming e is define as bellow
e = (np.random.rand(50) - 0.5) * 2
print(e)
# [ 0.80696443 -0.21383899  0.24793992  0.2757548   0.76099814 -0.40165596
#   0.40439654  0.80641232  0.76276385 -0.1885004  -0.09510676 -0.46585935
#  -0.67427026  0.77842939 -0.70304755  0.96944697 -0.93527756  0.03070151
#  -0.59774191  0.77202175  0.02723984  0.15660317 -0.40143469  0.67439481
#   0.05329966 -0.79031152 -0.44374118 -0.90681013  0.0181523  -0.05514742
#   0.80897467  0.88698444  0.4067847   0.69259591  0.85598929  0.63872377
#   0.69037113  0.58290375 -0.65799968 -0.42004416 -0.39103217 -0.70467981
#   0.14763706  0.72711402 -0.35340105 -0.44870115  0.36437477 -0.61718738
#   0.16204896  0.72511654]


# Build the histogram
n, bins, patches = plt.hist(e, bins=Data )

print("n: ", n)
print("bins: ", bins)

# Show the histogram
plt.show()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...