Построение результатов для итераций - PullRequest
2 голосов
/ 05 мая 2020

Я новичок в python и хочу спросить, как построить фигуру из for l oop итерации?

Вот код!

import numpy as np #numerical python
import matplotlib.pyplot as plt #python plotting
from math import exp #exponential math directory
T_initial = 293
T_reference = range(298,340,2)
R1_initial = 57500
R2_initial = 13300
R3_initial = 18000
R4_initial = 5600
Beta = 4150
Vin = 2.8
for i in T_reference:
    R1_refe = R1_initial*exp(Beta*((1/i)-(1/T_initial)))
    Rs = (R2_initial/(R2_initial+ R1_refe)) - (R4_initial/(R3_initial+R4_initial))
    Vo = Vin*Rs
    Vo_round = round(Vo, 3)
    print(i,Vo_round)

Ответы [ 3 ]

1 голос
/ 05 мая 2020

Вы можете построить данные следующим образом:

for i in T_reference:
    R1_refe = R1_initial*exp(Beta*((1/i)-(1/T_initial)))
    Rs = (R2_initial/(R2_initial+ R1_refe)) - (R4_initial/(R3_initial+R4_initial))
    Vo = Vin*Rs
    Vo_round = round(Vo, 3)
    plt.scatter(i, Vo_round)
plt.show()

Это то, что вы искали?

enter image description here

0 голосов
/ 05 мая 2020

Два варианта без for-loop

Создать функцию

def v_o(T_reference):
    T_initial = 293
    R1_initial = 57500
    R2_initial = 13300
    R3_initial = 18000
    R4_initial = 5600
    Beta = 4150
    Vin = 2.8

    R1_refe = R1_initial*exp(Beta*((1/T_reference)-(1/T_initial)))
    Rs = (R2_initial/(R2_initial + R1_refe)) - (R4_initial/(R3_initial+R4_initial))
    Vo = Vin*Rs
    Vo_round = round(Vo, 3)
    return Vo_round

Вариант 1: использовать pandas фрейм данных

import pandas as pd
import matplotlib.pyplot as plt

# create the dataframe with T_reference
df = pd.DataFrame({'t_ref': [*range(298, 340,2)]})

# Call the function to calculate v_o
df['v_o'] = df.t_ref.apply(v_o)

# plot
df.plot('t_ref', 'v_o', legend=False)
plt.show()

Вариант 2: использовать map

T_reference = [*range(298, 340,2)]
v_o = list(map(v_o, T_reference))

plt.plot(T_reference, v_o)
plt.show()

График

  • График для обоих вариантов выглядит следующим образом

enter image description here

0 голосов
/ 05 мая 2020
  1. Поместите значения элементов, которые вы хотите построить, в два разных массива с помощью метода 'append' (один для оси 'x' и один для оси 'y').
  2. Затем просто постройте график с помощью matplotlib
  3. . Он должен выглядеть примерно так:
is1 = list()
vos = list()

for i in T_reference:
    R1_refe = R1_initial*exp(Beta*((1/i)-(1/T_initial)))
    Rs = (R2_initial/(R2_initial+ R1_refe)) - (R4_initial/(R3_initial+R4_initial))
    Vo = Vin*Rs
    Vo_round = round(Vo, 3)
    print(i,Vo_round)
    is1.append(i)
    vos.append(Vo_round)

plt.plot(is1,vos)

Вот ссылка для построения

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