Используйте map
, чтобы создать серию, которую вы можете передать как цвета.
MCVE
import pandas as pd
import numpy as np
np.random.seed(123)
dates = pd.date_range('2014-01-01', '2017-12-31', freq='12D')
df = pd.DataFrame({'Date': dates,
'Energy': np.random.randint(1, 1000, len(dates)),
'Cost': np.random.randint(10000, 15000, len(dates))})
Код
color_d = {2014: 'red', 2015: 'blue', 2016: 'orange', 2017: 'black'}
df.plot.scatter(x='Energy', y='Cost', c=df.Date.dt.year.map(color_d))

Или с матплотлибом
import matplotlib.pyplot as plt
plt.scatter(df.Energy.values, df.Cost.values, c=df.Date.dt.year.map(color_d))
_ = plt.xlabel('Energy')
_ = plt.ylabel('Cost')
plt.show()