I hope this helps . You're plotting them all on the same figure so the labels are repeating because you are putting 3 different plots with identical labels on the same figure (so you'd see each label three times). You can see this by calling plt.show() at the end which gives you just a single figure that looks like this (I scrunched it down to fit my computer screen).
import pandas as pa
from datetime import datetime
import matplotlib.pyplot as plt
data = [['2018-10-29', 53, 'Anna Smith'],['2018-10-30', 118, 'Anna Smith'],['2018-10-31', 142, 'Anna Smith'],['2018-10-31', 7, 'Dominic Smith'],['2018-10-30', 1, 'Unknown Name'],['2018-10-29', 33, 'Jade Smith'],['2018-10-30', 103, 'Jade Smith'],['2018-10-31', 105, 'Jade Smith'],['2018-10-29', 41, 'Joanna Smith'],['2018-10-30', 169, 'Joanna Smith'],['2018-10-31', 220, 'Joanna Smith'],['2018-10-29', 31, 'John Smith'],['2018-10-30', 61, 'John Smith'],['2018-10-31', 79, 'John Smith'],['2018-10-29', 44, 'Nataly Smith'],['2018-10-30', 100, 'Nataly Smith'],['2018-10-31', 120, 'Nataly Smith'],['2018-10-30', 25, 'Sebastian Smith'],['2018-10-31', 47, 'Sebastian Smith'],['2018-10-29', 52, 'Veronica Smith'],['2018-10-30', 74, 'Veronica Smith'],['2018-10-31', 77, 'Veronica Smith']]
resultRunningTotal = pa.DataFrame(data, columns = ['date', 'runningTotal','name'])
resultRunningTotal['date'] = pa.to_datetime(resultRunningTotal['date']).dt.date
print(type(resultRunningTotal))
print(resultRunningTotal.dtypes)
plt.figure(figsize=(24,13.5))
TuniqueDates = resultRunningTotal['date'][~resultRunningTotal.duplicated(['date'])]
dfUniqueDates = pa.DataFrame(TuniqueDates)
dfUniqueDates.sort_values(by=['date'], inplace=True, ascending=True)
startDate = min(dfUniqueDates['date'])
def savePlot (tDF, fig):
listOfUniqueNames = tDF['name'].unique()
#print(tDF) #print_no_2
for n in listOfUniqueNames:
tDF2 = tDF[tDF.name == n]
plt.figure(fig)
tDF2.plot(kind='line',x='date',y='runningTotal',ax=plt.gca(),linewidth=3,label = n)
for d in dfUniqueDates['date']:
mask = (resultRunningTotal['date'] >= startDate) & (resultRunningTotal['date'] <= d)
tempDF5 = resultRunningTotal.loc[mask]
fig_num = dfUniqueDates['date'].tolist().index(d)
savePlot(tempDF5, fig_num)
plt.savefig(str(d)+'plot.png')
plt.show()