Использовать график рассеяния .Для каждого числа Рейнольдса у вас есть n значений напряжения.Диаграмма рассеяния требует столько же значений x, сколько существует значений y, поэтому вам нужно создать последовательность значений x такой же длины, что и значения y.
x = [1,1,1,1]
y = [1,2,3,4]
Если у вас несколько множеств из х / у данных вы можете построить их вручную следующим образом:
x = [1,1,1,1]
y = [1,2,3,4]
plt.scatter(x,y)
x = [2,2,2,2]
y = [1.1,2.1,3.1,4.1]
plt.scatter(x,y)
plt.show()
plt.close()
Для вашего случая вы хотите накапливать значения x и y во внутреннем цикле, а строить их, когда внутреннийцикл завершается.
from matplotlib import pyplot as plt
for i in range(0, 105):
x = []
y = []
Re = 0.1 * (1.1**i)
B = e ** (-0.08 * Re) * (2.5 * np.log(Re) + 5.25) + 8.5 * (1 - e ** (-0.08 * Re))
C = 0.8+0.9*((e**(-0.08*Re)/(Re**2))+((1-e**(-0.08*Re))/(B**2)))**(-0.5)
F = 0.31*Re*e**(-0.1*Re)+1.8*e**(-0.88*d50/D)*(1-e**(-0.1*Re))
A = F/C
for j in range(10):
Dcbss = 0.52*math.tan(fi) / (((1 + (abs(n[j])*A))**2)*(1+(1/2.5)*((abs(n[j])*F)**2)*math.tan(fi)))
x.append(i)
y.append(Dcbss)
plt.scatter(x,y)
plt.show()
plt.close()
Из документов: The plot function will be faster for scatterplots where markers don't vary in size or color.
.Если это так, просто используйте .plot () и укажите форму маркера - plt.plot(x,y,'ro')
вместо plt.scatter(x,y)
.
matplotlib.pyplot.scatter ()
matplotlib.pyplot.plot ()