• Register

Izris konstantne funkcije v matplotlib

+1 vote
176 views
Pozdravljeni,

naletel sem na eno manjšo oviro, in sicer sledečo:

v matplotlibu želim izrisati konstanto (npr. y = 2) na intervalu npr. od 0 do 5 in potem na intervalu npr. 5 do 10 drugo konstanto, recimo y2 = 4. Nekako mi izpis tega v v tem modulu ne uspe. Tudi nikjer nisem uspel najti ali je to sploh mogoče? Če ni, ali obstaja kakšen drugi podoben modul ki to zmore?

Hvala!
asked May 17, 2018 by Rok Kalister (1,090 points)

1 Answer

+2 votes
 
Best answer

Matplotlib-ov plot privzeto izrisuje le linearne povezave med podanimi točkami (pari [x, y]) koordinat.

Sicer niste priložili kode, s katero ste imeli težavo, a po opisu sklepam, da je šlo za kaj takega:

x = 5
y = 2
plt.plot(x, y)

V takem primeru se na grafu ne bo izrisalo nič - podali ste eno samo točko (x=5, y=2), matplotlib pa torej izrisuje povezave med točkami. Pri eni sami točki ni ničesar za izrisati.

Vašega problema se pravilno lotite tako, kot smo na vajah vedno izrisovali grafe v matplotlibu - na intervalu na x-osi, kjer želite graf izrisati, pripravite željeno število točk (vsaj 2, da bomo imeli vsaj eno povezavo), v polju y pa podajte vrednosti, ki naj se pri vsaki izmed točk x izrišejo na graf. Pri vas je to zelo enostevno - kar konstantne vrednosti.

x = np.array([0, 5])
y = np.array([2, 2])
plt.plot(x, y)

answered May 18, 2018 by dgorjup (68,450 points)
selected May 18, 2018 by janko.slavic
Hvala za odgovor!
Moj problem je sicer ležal globje, pripravljeno je bilo polje točk x in imel sem funkcijo ki vrača konstantno vrednost, katero ob klicu grafa:

plt.plot(x,T(x))

ni hotelo izrisati. Ko sem tudi y zapisal tako kot ste zgoraj, pa deluje v redu.
Tudi s funkcijo bi šlo. Če želite rezultat funkcije izrisati na y-osi morate poskrbeti, da bo ta imel enako število elementov (konstantnih - enih in istih vrednosti), kot je točk na x-osi. Nekako tako:

def T(x):
    return np.ones_like(x) * konstanta
Aha, tako torej, razumem. Hvala za odgovor!
...