Pandas seaborn或matplotlib折线图,线条颜色取决于变量

Pandas seaborn或matplotlib折线图,线条颜色取决于变量,pandas,matplotlib,seaborn,Pandas,Matplotlib,Seaborn,我有一个熊猫数据框,有三列,Date(时间戳)、Color(“红色”或“蓝色”)和Value(int) 我目前正在从中获取一个带有以下代码的折线图: import matplotlib.pyplot as plt import pandas as pd Dates=['01/01/2014','02/01/2014','03/01/2014','04/01/2014','05/01/2014','06/01/2014','07/01/2014'] Values=[3,4,6,5,4,5,4] C

我有一个熊猫数据框,有三列,
Date
(时间戳)、
Color
(“红色”或“蓝色”)和
Value
(int)

我目前正在从中获取一个带有以下代码的折线图:

import matplotlib.pyplot as plt
import pandas as pd
Dates=['01/01/2014','02/01/2014','03/01/2014','04/01/2014','05/01/2014','06/01/2014','07/01/2014']
Values=[3,4,6,5,4,5,4]
Colors=['red','red','blue','blue','blue','red','red']
df=pd.DataFrame({'Dates':Dates,'Values':Values,'Colors':Colors})
df['Dates']=pd.to_datetime(df['Dates'],dayfirst=True)

grouped = df.groupby('Colors')
fig, ax = plt.subplots()

for key, group in grouped:
   group.plot(ax=ax, x="Dates", y="Values", label=key, color=key)

plt.show()
我希望线条颜色取决于“颜色”列。我怎样才能做到这一点

我看到过一个关于散点图的类似问题,但似乎我无法将相同的解决方案应用于时间序列折线图

我的输出当前为:

我正在努力实现这样的目标(只有一行,但有几种颜色)


正如我所说,你可以从我在评论中附上的答案中找到答案:

import matplotlib.pyplot as plt
import pandas as pd

Dates = ['01/01/2014', '02/01/2014', '03/01/2014', '03/01/2014',
         '04/01/2014', '05/01/2014']
Values = [3, 4, 6, 6, 5, 4]
Colors = ['red', 'red', 'red', 'blue', 'blue', 'blue']
df = pd.DataFrame({'Dates': Dates, 'Values': Values, 'Colors': Colors})
df['Dates'] = pd.to_datetime(df['Dates'], dayfirst=True)

grouped = df.groupby('Colors')
fig, ax = plt.subplots(1)

for key, group in grouped:
   group.plot(ax=ax, x="Dates", y="Values", label=key, color=key)

当改变颜色时,您需要添加额外的点以使线条连续

可能的重复。您可以附加数据框的一部分吗?因此您的示例有5个数据点,由(日期,值)表示。在我看来,这将创建一条线,而不是5条线。你到底想改变什么颜色?因为该行只需要1种颜色,所以想法是有一行,颜色的变化取决于数据帧中的另一个变量。下面的第一个解决方案通过将每种颜色分割成不同的线条来接近这一点。谢谢。这是我不清楚的groupby部分。此解决方案将每种颜色分割成不同的线条,在颜色不随时间重复时效果良好。当它们这样做时,相同颜色的线段连接起来,因此同一日期出现两条线。我想matplotlib每行只允许一种颜色?下面是我试图实现的一个例子:如果你在颜色改变时复制点,你可以这样做,我已经修改了答案,你也可以试试那个:我用我的输出更新了我的问题。颜色之间的不连续方面不是什么大问题,但事实上,每一条彩色线都连接到同一颜色的下一段是有问题的,而不是只有一条线有多种颜色。关于如何解决这个问题有什么想法吗?据我所知,在任何情况下,你都需要把线分成几段,然后用适当的颜色绘制出来。你所说的“一行多色”是什么意思?