Python Pylab Chart График и петли - PullRequest
0 голосов
/ 12 мая 2019

Я только изучаю Python, и мне интересно, может ли кто-нибудь помочь мне правильно отобразить диаграмму в следующем коде, то есть отобразить последовательность точек данных. Я поместил операторы print, чтобы понять, правильны ли расчеты.

Спасибо

from pylab import *

def some_function(ff, dd):
    if dd >=0 and dd <=200:
        tt = (22/-90)*ff+24
    elif dd >=200 and dd <=1000:
        st = (22/-90)*(ff)+24
        gg = (st-2)/-800
        tt = gg*dd+(gg*-1000+2)
    else:
        tt = 2.0
    return tt

ff = float(25)
for dd in range (0, 1200, 100):
    tt1 = some_function(ff, dd)
    plot(dd,tt1)
    print(dd)
    print(tt1)
title("Something")
xlabel("x label")
ylabel("y label")
show()

Ответы [ 2 ]

1 голос
/ 12 мая 2019

Вы можете векторизовать свою функцию и работать с массивами NumPy, чтобы избежать цикла for и лучше информировать matplotlib о том, что вы хотите построить

import numpy as np
from pylab import *

def some_function(ff, dd):
    if dd >=0 and dd <=200:
        tt = (22/-90)*ff+24
    elif dd >=200 and dd <=1000:
        st = (22/-90)*(ff)+24
        gg = (st-2)/-800
        tt = gg*dd+(gg*-1000+2)
    else:
        tt = 2.0
    return tt

vectorized_some_function = np.vectorize(some_function)

ff = float(25)
dd = np.linspace(0, 1100, 12)
tt = vectorized_some_function(ff, dd)
plot(dd, tt)
title("Something")
xlabel("x label")
ylabel("y label")
show()

plot

1 голос
/ 12 мая 2019

Поскольку вы строите одну точку за раз, вам нужен либо точечный график, либо график с маркерами

for dd in range (0, 1200, 100):
    tt1 = some_function(ff, dd)
    scatter(dd, tt1) # Way number 1
    # plot(dd,tt1, 'o') # Way number 2

enter image description here

РЕДАКТИРОВАТЬ (отвечая на второй вопрос в комментариях ниже): сохранить результаты в виде списка и вывести за пределы цикла for

result = []
dd_range = range (0, 1200, 100)
for dd in dd_range:
    tt1 = some_function(ff, dd)
    result.append(tt1)
plt.plot(dd_range, result, '-o')   

enter image description here

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