Я пытаюсь отсортировать мой массив "factor_groups" по второму столбцу, который содержит значения f_pow, от самого высокого до самого низкого.В конечном счете, я пытаюсь создать точечную диаграмму из трех значений: f_cond на оси x, f_mom на y и использование цвета для определения значения f_pow (0,7, 0,8 или 0,9) и размерамаркер, указывающий, как часто он появляется в массиве factor_group.Значение f_pow_count будет использоваться для размера маркера, и его нужно отсортировать от самого высокого к низшему, чтобы маркеры самых больших размеров наносились первыми и не покрывали меньшие.
Я пробовал функцию argsort, но не могу заставить ее работать.
f_cond_plot=[]
f_pow_plot=[]
f_mom_plot=[]
factor_group={}
distinct_sets=[]
data_file = open('Ti=Te.csv')
csv_f = csv.reader(data_file)
for row in csv_f:
if i == 16:
#print("end")
break
else:
#print(i)
Te_t[i] = float(row[3])
Ti_t[i] = float(row[4])
n_t[i] = float(row[5])
L[i] = float(row[10])
Te_u_div[i] = float(row[6])
Ti_u_div[i] = float(row[7])
n_u_div[i] = float(row[8])
q_par_div[i] = float(row[9])
Tu_div[i] = float(Te_u_div[i]+Ti_u_div[i])
c_s_div[i] = float(row[11])
radius[i] = (row[0])
IR_div[i] = float(row[2])
i = i+1
f_cond=np.linspace(.1,.9,9)
f_pow=np.linspace(.1,.9,9)
f_mom=np.linspace(.1,.9,9)
for a in f_cond:
s=s+1
for b in f_pow:
for c in f_mom:
factor[z]=[a,b,c]
if y == 2:
for x in range(0, len(Te_t)):
gamma = 7
c_s[x] = np.power([k_b*(Ti_t[x]+Te_t[x])*K_ev/(m_e+m_i)] , 0.5)
#print(c_s[x])
q_par[x] = gamma*n_t[x]*k_b*K_ev*(Ti_t[x]+Te_t[x])*c_s[x]*(1-b)
Tu[x] = np.power(np.power(Ti_t[x]+Te_t[x], (7/2))+(7/2)*a*q_par[x]*L[x]/ko_e , (2/7))
n_u_simp[x] = 2*n_t[x]*(Ti_t[x]+Te_t[x])/(c*Tu[x])
n_u_com[x] = np.power(m_i/(2*e*(Ti_t[x]+Te_t[x]))*4*np.power(q_par[x], 2)*np.power((7/2)*q_par[x]*L[x]/ko_e, (-4/7))/(np.power(gamma, 2)*e**2), 0.5)/c
if cs_lower_bound < c_s[x]/c_s_div[x] < cs_upper_bound and Tu_lower_bound < Tu[x]/Tu_div[x] < Tu_upper_bound and q_par_lower_bound < q_par[x]/q_par_div[x] < q_par_upper_bound:
#This If statement has no bounds on q_par
#and 0.1 < q_par[x]/q_par_div[x] < 10
if nu_lower_bound < n_u_com[x]/n_u_div[x] < nu_upper_bound:
#nor u_lower_bound < n_u_simp[x]/n_u_div[x] < nu_upper_bound
f_cond_plot.append(a)
f_pow_plot.append(b)
f_mom_plot.append(c)
f_cond_avg.append(a)
f_pow_avg.append(b)
f_mom_avg.append(c)
if x==0:
IR10_cnt=IR10_cnt+1
elif x==1:
IR11_cnt=IR11_cnt+1
elif x==2:
IR12_cnt=IR12_cnt+1
elif x==3:
IR13_cnt=IR13_cnt+1
elif x==4:
IR14_cnt=IR14_cnt+1
elif x==5:
IR15_cnt=IR15_cnt+1
elif x==6:
IR16_cnt=IR16_cnt+1
elif x==7:
IR17_cnt=IR17_cnt+1
elif x==8:
IR18_cnt=IR18_cnt+1
elif x==9:
IR19_cnt=IR19_cnt+1
elif x==10:
IR20_cnt=IR20_cnt+1
elif x==11:
IR21_cnt=IR21_cnt+1
elif x==12:
IR22_cnt=IR22_cnt+1
elif x==13:
IR23_cnt=IR23_cnt+1
elif x==14:
IR24_cnt=IR24_cnt+1
elif x==15:
IR25_cnt=IR25_cnt+1
number=number+1
#cs_ratio=c_s/c_s_div
Tu_ratio=Tu/Tu_div
q_par_ratio=q_par/q_par_div
nu_simp_ratio=n_u_simp/n_u_div
nu_com_ratio=n_u_com/n_u_div
#ratio[z]=["factors", factor[z], "Tu ratio" ,Tu_ratio, "heat flux ratio", q_par_ratio,"simple denisty ratio", nu_simp_ratio,"complex denisty ratio", nu_com_ratio]
z=z+1
f_cond_avg=np.array(f_cond_avg)
f_pow_avg=np.array(f_pow_avg)
f_mom_avg=np.array(f_mom_avg)
for t in range(0,number):
factor_group [t]=[f_cond_plot[t], f_pow_plot[t], f_mom_plot[t]]
print("first",factor_group)
count_pow_7=0
count_pow_8=0
count_pow_9=0
f_pow_color=np.zeros(len(f_pow_plot), dtype=str)
#Finds the value of f_pow that occurs most
for c in range(0,len(f_pow_plot)):
if f_pow_plot[c]==0.7000000000000001:
count_pow_7=count_pow_7+1
f_pow_color[c]="blue"
#print("0.7)",count_pow_7)
elif f_pow_plot[c]==0.8:
count_pow_8=count_pow_8+1
f_pow_color[c]="red"
#print("0.8)",count_pow_8)
elif f_pow_plot[c]==0.9:
count_pow_9=count_pow_9+1
f_pow_color[c]="yellow"
#print("0.9)",count_pow_9)
print("0.7)",count_pow_7)
print("0.8)",count_pow_8)
print("0.9)",count_pow_9)
factor_group = np.argsort(factor_group,1)
print("sorted",factor_group)
plt.scatter(f_cond_plot, f_mom_plot, c=f_pow_color, s=factor_group[1])
plt.title("Scatter plot of factor sets that meet conditions")
plt.xlabel("Conduction Factor")
plt.ylabel("Momentum Factor")
plt.legend(f_pow_plot)
plt.show
Я получаю сообщение об ошибке: AxisError: ось 1 выходит за границы массива измерения 1