Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Matplotlib中多个散点图的彩色标记日期_Python_Python 3.x_Pandas_Matplotlib_Plot - Fatal编程技术网

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

Python Matplotlib中多个散点图的彩色标记日期,python,python-3.x,pandas,matplotlib,plot,Python,Python 3.x,Pandas,Matplotlib,Plot,我有3个数据帧,其中有3个特性我想映射到散点图中: Date Energy Cost 我需要创建一系列散点图,以绘制能源和成本,但在日期列中按年份进行颜色编码 日期为datetime格式,持续4年,如下所示: 2015-12-30 00:00:00 2016-20-12 00:00:00 etc... 我知道我可以绘制plt.scatter(data[:],data[:]…c=data[:]) 但无法确定如何针对时间间隔对其进行适当格式化,以使每种颜色在4年中各不相同。使用map创建可以

我有3个数据帧,其中有3个特性我想映射到散点图中:

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

日期为datetime格式,持续4年,如下所示:

2015-12-30 00:00:00
2016-20-12 00:00:00
etc...
我知道我可以绘制
plt.scatter(data[:],data[:]…c=data[:])


但无法确定如何针对时间间隔对其进行适当格式化,以使每种颜色在4年中各不相同。

使用
map
创建可以作为颜色传递的系列

MCVE 密码


或者使用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()

如果您只有4年的数据,最简单的方法可能是调用plt.scatter 4x,每次使用“color=”和不同的颜色(例如color='red',color='green'等)。在plt.散点图中,您只选择该颜色的特定年份。范围是什么样的?我将其设置为
plt.scatter(df.iloc[0:251,3],df[0:251,1],c=south_5.iloc[:250],s=35)
但这给了我一个非常扭曲的图形,即使使用
plt.xlim
仅对第一个数据集使用数据的适当范围,当第二个数据集通过时,它给出
TypeError:您必须首先设置可映射的
数组。我会做类似
plt.scatter(df.loc[Date'].year==2015,3],df.loc[df]的事情['Date'].year==2015,1],c='red',s=35)
(未经测试)您可以向其传递一个与数据长度相同的数组。因此,只需使用map将年份映射到一个带有字典的颜色。
df.Date.dt.year.map({2014:'red',2015:'blue',…])
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()