Контурная графика в Python, используя только четные значения? - PullRequest
0 голосов
/ 16 апреля 2020

Мне недавно пришлось изменить набор данных, который я использовал для контурных графиков. Я использовал все значения в диапазоне от 3 до 16, но теперь я хочу использовать только ДАЖЕ значения в диапазоне от 4 до 18. Ниже приведен код:

c = np.linspace(0.01, 1, 10)
  for ratio_shear in c:
  s = 1
  xlist = np.linspace(4, 18, 8)
  ylist = np.linspace(0.01, 1, 100)
  n, ratio_beams = np.meshgrid(xlist, ylist)
  alpha = 360 / n
  r = (s / (2 * (np.sin((np.pi / n)))))
  apothem = s / (2 * np.tan(np.radians(180 / n)))

    for idx1 in range(len(xlist)):
    LIb = np.empty((int(idx1)))
    LIs = np.empty((int(idx1)))
    for idx2 in range(1, int(idx1 + 1)):
        if (idx1 % 2) == 0:
            LIb[idx2 - 1] = abs((r[0, idx1]) * ((np.cos(((np.radians((alpha[0, idx1]) / 2))) + ((idx2 - 1) * (np.radians(alpha[0, idx1])))))))
            #LIb[idx2 - 1] = abs((r[0, idx1 - xlist.astype(int)[0]]) * ((np.cos(((np.radians((alpha[0, idx1 - xlist.astype(int)[0]]) / 2))) + ((idx2 - 1) * (np.radians(alpha[0, idx1 - xlist.astype(int)[0]])))))))  # change i if we need
        else:
            LIb[idx2 - 1] = 0
        if (idx1 % 2) == 0:
            LIs[idx2 - 1] = abs(apothem[0, idx1] * np.cos(((idx2 - 1) * (np.radians(alpha[0, idx1])))))
            # LIs[idx2 - 1] = abs(apothem[0, idx1 - xlist.astype(int)[0]] * np.cos(((idx2 -      1) * (np.radians(alpha[0, idx1 - xlist.astype(int)[0]])))))
        else:
            LIs[idx2 - 1] = 0

    LIbSquared = LIb ** 2
    LIsSquared = LIs ** 2
    LIbSum[idx1 - 3] = np.sum(LIbSquared)
    LIsSum[idx1 - 3] = np.sum(LIsSquared)

Мне нужно это l oop чтобы получить только значения LIb и LIs Sum только для четных значений n, данного диапазона (4, 18, 7). Мой контурный график отображает значения n, которые являются нечетными. Вот код для одного из контурных графиков:

X = n
Y = ratio_beams
Z = BeamRatio_P
fig, ax = plt.subplots()
ax.set_title('Pcr_B/p Graph')
plt.xlabel('n value')
plt.ylabel('ratio beams')
plt.contourf(X, Y, np.log10(Z))
plt.colorbar()
plt.savefig(str('StrainEnergy_BeamRatioP_RatioShear=' + str(ratio_shear).replace('.', ',')[0:4]))

Спасибо за помощь

...