Python - добавление координатной точки (0,0) к существующим данным в списке .append / .insert? - PullRequest
0 голосов
/ 01 августа 2020

Ниже приведен фрагмент некоего python кода, который принимает входные данные и отображает выходные значения относительно явно определенных значений x. Я хотел бы добавить точку (0,0) к созданным графикам и попытался использовать для этого функцию list.insert (index, value), но это не работает - как я могу добавить (0,0) к точкам данных, нанесенным на определенный индекс, чтобы все полученные графики имели эту новую точку (0,0), к которой нужно присоединиться при построении? Я добавил синтаксис «zero_val» в списке результатов. poi_values ​​- это просто строки файлов данных, которые я перехожу в функцию с именем chi2. Результатом chi2 являются значения, и я хочу добавить 0 к 4-му индексу между -0,25 и 0,25, где poi_numerical_values ​​- это значения x, которые я явно строю на графике значений chi2 (ось y) против (добавлено значение x 0 в список поскольку это то, что я хочу построить против значения y, равного 0, но не уверен, как обновить список для этого): -)

ewk_qcd_file = "EWK_QCD_cW_1.00000e-99_paramvalue-scaled.yoda"

poi_values = ["-0.55","-0.45", "-0.35", "-0.25", "0.25", "0.35", "0.45", "0.55"]

results = []
for poi in poi_values:
    poi_file="EWK_QCD_cW_{param}_paramvalue-scaled_merged.yoda".format(param=poi)
    chi2=yoda_chisq(ewk_qcd_file, poi_file)
    results.append(chi2)



print(poi_values)
print(results)

poi_numerical_values = [-0.55, -0.45, -0.35, -0.25, 0, 0.25, 0.35, 0.45, 0.55]

error_keys = []
error_values = []

Доступ к первому словарю в результатах для получения значений ключей

для ключа, значения в результатах [0] .items (): print (key)

error_keys.append(key)

# Iterating to get this key's value from all dictionaries and appending to temp_list
temp_list = []
for item in results:
    temp_list.append(item[key])

# Adding labels to graph
plt.title('$\chi^2$ minimisation %s' % key)
plt.ylabel('$\chi^2$ ')
plt.xlabel('cW parameter value')

# Creating line at y=1

y_line = [1] * 300

# Smoothing graph into new 300 point graph
x = np.array(poi_numerical_values)
y = np.array(temp_list)

#specify degree of polynomial fit

degree = 2

pn_coeff = np.polyfit(x,y, degree)
pn = np.poly1d(pn_coeff)

x_smooth = np.linspace(x.min(), x.max(),300)
y_parabola = pn(x_smooth)

# Plotting y=1 and parabola
plt.plot(x_smooth, y_line)
plt.plot(x_smooth, y_parabola)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...