Home > Net >  Plot line from dataframe
Plot line from dataframe

Time:03-05

I have the following dataframe [1] which contains information relating to music listening. I would like to print a line graph like the following enter image description here

The code I used to obtain the plot is the following:

import numpy as np
import pylab as pl
from matplotlib import collections  as mc

lines = [ [(2, 107), (3,107)], [(11,133),(12,133)], [(12,122),(13,122)], ]
c = np.array([(1, 0, 0, 1), (0, 1, 0, 1), (0, 0, 1, 1)])

lc = mc.LineCollection(lines, colors=c, linewidths=2)
fig, ax = pl.subplots()
ax.add_collection(lc)
ax.autoscale()
ax.margins(0.1)

To obtain data:

import numpy as np
import pandas as pd



dfLunedi = pd.read_csv( "5.sab.csv", encoding = "ISO-8859-1", sep = ';')

dfSlotMean = dfLunedi.groupby('slotID', as_index=False).agg( NSabUn=('date', 'nunique'),NSabTot = ('date', 'count'), MeanBPM=('tempo', 'mean') )



df = pd.DataFrame(dfSlotMean)
df.to_csv('sil.csv', sep = ';', index=False)

df.drop(df[df.NSabUn < 3].index, inplace=True)

CodePudding user response:

You can loop through the rows and plot each segment like this:

for _, r in df.iterrows():
    plt.plot([r['slotID'], r['slotID'] 1], [r['MeanBPM']]*2)

Output:

enter image description here

  • Related