Matplotlib中多个散点图的颜色标记日期

时间:2018-10-26 21:00:02

标签: python python-3.x pandas matplotlib plot

我有3个数据框,它们具有3个要映射到散点图中的特征:

Date  Energy  Cost

我需要创建一系列散点图,绘制能源和成本,但在日期列中按年份进行颜色编码。

日期采用日期时间格式,历时4年,如下所示:

2015-12-30 00:00:00
2016-20-12 00:00:00
etc...

我知道我可以绘制plt.scatter(data[:], data[:].... c=data[:])

但是无法弄清楚如何针对时间间隔正确地设置格式,以使每种颜色在4年中都不同。

1 个答案:

答案 0 :(得分:1)

使用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))

enter image description here


或使用matplotlib

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()