%matplotlib inline
Last ned fra www.python.org og start installasjonen, på en av sidene må dere velge "Add python 3.6 to PATH"
Last ned fra www.python.org og start installasjonen.
pip
pakkebehandler¶pip
er et program som følger med python og brukes til å installere moduler til python. pip3
er for python3
Sålenge du har installert python og pip kan du åpne en terminal, cmd+shift på Mac. (Linux-brukere regner jeg med kan dette allerede)
sudo pip install matplotlib
sudo pip install numpy
sudo pip install pandas
Sålenge du har installert python og pip via moderne pakker. Trykk windows, skriv cmd.exe og kjør dette.
pip.exe install matplotlib
pip.exe install numpy
pip.exe install pandas
Kjør python enten fra terminal, eller start det som et vanlig program.
Det skal se cirka slik ut:
Som vanlig importerer vi, vi trenger en submodul fra matplotlib kalt pyplot.
from matplotlib import pyplot
from numpy import pi,e,exp,sin,cos,arange
Denne imiterer matlab. Neste steg er å ha noe data, dette kan være alt som er listeaktig, her lager jeg en range
med data ved hjelp av arange
fra numpy. Det er verd å merke seg at jeg bruker numpy sine funksjoner da de kan operere på mange data uten at jeg trenger løkker.
xs = arange(0,2*pi,0.01)
ys = []
for x in xs:
ys.append(sin(x))
pyplot.plot(xs,ys)
pyplot.show()
pyplot.savefig("filnavn.pdf") # gyldige extensions hos meg er: eps, pdf, pgf, png, ps, raw, rgba, svg, svgz.
# når du plotter en linje kan du også spesifisere farger og linjestil,
# det finnes enda noen flere valg, men dette er de mest nyttige
pyplot.plot(xs,ys,linestyle="dashed",color="coral")
pyplot.title("Dette er en tittel")
pyplot.xlabel("Tid [s]")
pyplot.ylabel("Utsving [m]")
Vi har til nå brukt det som kalles pyplot-APIet til Matplotlib, fordi det er enkelt, en del eksempler frammover vil nå inneholde demonstrasjon av det objektorienterte APIet. Nå vil vi se at en figure, fig
, er forksjellig fra aksen, ax
, og at funksjonene som vi tidligere brukte på pyplot nå tilhører enten figuren, eller aksen.
Figure
er det omsluttende objektet, det inneholder akser, akser inneholder plottede data.
fig,ax = pyplot.subplots()
ax.plot(xs,ys)
#fig.show() # husk denne linjen om du skriver et script eller i python-skallet.
from matplotlib import pyplot
figur,subplot = pyplot.subplots(2)
subplot[0].plot([1,2])
subplot[1].plot([3,2])
#figur.show()
figur2,subplot2 = pyplot.subplots(2)
subplot2[0].plot([10,2])
subplot2[1].plot([30,2])
from matplotlib import pyplot
fig,ax=pyplot.subplots(2,2)
ax[0][0].plot([1,2,3,4,5,6,7,8,9,10],label="alder", color='blue')
ax[0][1].plot([2,2,3,4,5,6,7,8,9,10])
ax[1][0].plot([3,2,3,4,5,6,7,8,9,10])
ax[1][1].plot([4,2,3,4,5,6,7,8,9,10])
ax[0][0].legend(loc='best') # Legends settes per akse.
xs = arange(0,2*pi,0.01)
ys = [sin ( x ) for x in xs]
pyplot.polar(xs,ys,linestyle='dashed')
import matplotlib.pyplot as pyplot
xs = arange(0,2*pi,0.1)
ys = [sin ( x ) for x in xs]
pyplot.scatter(xs,ys)
import matplotlib.pyplot as pyplot
xs = arange(0,2*pi,0.1)
ys = [sin ( x ) for x in xs]
fig,ax = pyplot.subplots()
ax.semilogy(xs, ys)
from matplotlib import pyplot
import numpy as np
# disse 3 linjene er for å lage normalfordelte data til å late som er data.
xs = np.arange(1000)
prng = np.random.RandomState(19680801)
ys = prng.normal(size=1000)
# jeg bruker pyplot til å gi meg direkte tilgang til figur og akser. For å se tilhørende funksjoner må jeg nå slå opp
# i dokumentasjonen for det objektorienterte APIet til matplotlib.
fig,ax=pyplot.subplots(1,2)
# I ax[0] plotter jeg det tilfeldige signalet, og i ax[1] plotter jeg histogrammet.
ax[0].plot(xs,ys);
ax[1].hist(ys,bins=20); # bins er et keyword-argument som sier hvor mange bøtter jeg vil ha dataene talt opp i
# Dette er bare en liten variasjon over den forrige hvor jeg roterer histogrammet for å bedre vise distribusjonen
# for signalet
xs = np.arange(1000)
prng = np.random.RandomState(19680801)
ys = prng.normal(size=1000)
# jeg bruker pyplot til å gi meg direkte tilgang til figur og akser. For å se tilhørende funksjoner må jeg nå slå opp
# i dokumentasjonen for det objektorienterte APIet til matplotlib.
fig,ax = pyplot.subplots(1,2)
ax[0].plot(xs,ys,color='pink', );
ax[0].plot(xs,0.01*ys,color='blue', );
ax[1].hist(ys,orientation=u'horizontal', label="which label",bins=40);
ax[1].legend(loc="upper center")
# litt viktige forskjeller mellom pyplot-APIet og det objektorienterte APIet, vi bruker .set_title og .set_xlabel
# og lignende
ax[1].set_title("fordeling")
ax[1].set_ylabel("målingsfordeling")
ax[1].set_xlabel("antall")
#fig.show()
## Og enda en variasjon for å endre hvor mye plass hver kolonne tar.
import matplotlib.gridspec as gridspec
xs = np.arange(1000)
prng = np.random.RandomState(19680801)
ys = prng.normal(size=1000)
fig,ax = pyplot.subplots(1,2,gridspec_kw=dict(width_ratios=[3,1]))
ax[0].plot(xs,ys,color='pink', );
ax[0].plot(xs,0.01*ys,color='blue', );
ax[1].hist(ys,orientation='horizontal', label="distribution", bins=40);
ax[1].legend(loc="upper center")
ax[1].set_title("fordeling")
ax[1].set_ylabel("målingsfordeling")
ax[1].set_xlabel("antall")
#fig.show()
import matplotlib.pyplot as pyplot
from math import sin
xs = [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0,1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0]
ys = []
for x in xs:
ys.append( sin(x))
pyplot.plot(xs,ys)
pyplot.show()
xs = [ 1.0,1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0,0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]
ys = []
for x in xs:
ys.append( sin(x))
pyplot.plot(xs,ys)
pyplot.show()
import pandas
import matplotlib.pyplot as plt
data_frame = pandas.read_csv("Torje+Hos_Digernes_2018-04-04_15-35-03.csv",header=2)
print( data_frame[0:-1][0:5] )
data_frame = data_frame.drop(labels=["Stride length (m)","Cadence","Altitude (m)","Power (W)", "Temperatures (C)","Unnamed: 11"], axis=1)
print( data_frame[0:-1][0:5] )
#print(pandas.to_datetime(data_frame["Time"]))
data_frame["Time"]= pandas.to_datetime(data_frame["Time"])
plt.plot(data_frame["Time"], data_frame[["HR (bpm)","Speed (km/h)"]])
plt.show()
import pandas
import matplotlib.pyplot as plt
data_frame = pandas.read_csv("Torje+Hos_Digernes_2018-04-04_15-35-03.csv",header=2)
data_frame = data_frame.drop(labels=["Stride length (m)","Cadence","Altitude (m)","Power (W)", "Temperatures (C)","Unnamed: 11"], axis=1)
data_frame["Time"]= pandas.to_datetime(data_frame["Time"])
plt.plot(data_frame["Time"], data_frame[["HR (bpm)"]])
ax1 = plt.twinx()
ax1.plot(data_frame["Time"], data_frame[["Speed (km/h)"]],color="red")
plt.show()
import pandas
import matplotlib.pyplot as plt
data_frame = pandas.read_csv("Torje+Hos_Digernes_2018-04-04_15-35-03.csv",header=2)
data_frame = data_frame.drop(labels=["Stride length (m)","Cadence","Altitude (m)","Power (W)", "Temperatures (C)","Unnamed: 11"], axis=1)
data_frame["Time"]= pandas.to_datetime(data_frame["Time"])
plt.plot(data_frame["Time"], data_frame[["HR (bpm)"]])
ax1 = plt.twinx()
ax1.plot(data_frame["Time"], data_frame[["Speed (km/h)"]], c="green")
plt.title("Running session")
ax1.set_ylim(0,24)
plt.show()
Siden det var helt uleselig over
import pandas
import matplotlib.pyplot as plt
from pandas.tseries import converter as pdtc
pdtc.register()
import matplotlib.dates as mdates
minute = mdates.MinuteLocator(range(0,60,5))
second = mdates.SecondLocator()
fmt = mdates.DateFormatter('%M:00')
data_frame = pandas.read_csv("Torje+Hos_Digernes_2018-04-04_15-35-03.csv",header=2)
data_frame = data_frame.drop(labels=["Stride length (m)","Cadence","Altitude (m)","Power (W)", "Temperatures (C)","Unnamed: 11"], axis=1)
data_frame["Time"]= pandas.to_datetime(data_frame["Time"])
fig, ax0 = plt.subplots()
ax0.plot(data_frame["Time"], data_frame[["HR (bpm)"]])
ax0.xaxis.set_major_locator(minute)
ax0.xaxis.set_major_formatter(fmt)
labels = ax0.get_xticks()
ax1 = plt.twinx()
ax1.plot(data_frame["Time"], data_frame[["Speed (km/h)"]], c="green")
fig.suptitle("Running session")
ax1.set_ylim(0,24)
plt.show()