Seaborn或Matplotlib折线图,折线颜色取决于变量。

3
我有一个带有三列的pandas数据框,Date(时间戳),Color('red'或'blue')和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()

我希望线的颜色取决于“颜色”列。我该如何实现?
我在这里看到了一个类似的散点图问题here,但似乎我不能将相同的解决方案应用到时间序列线图中。
目前我的输出是这样的:

enter image description here

我正在尝试实现类似于这样的效果(仅一行,但有几种颜色)。

enter image description here


你能附上你的数据框的一部分吗? - undefined
所以你的例子有5个数据点,用(日期,值)表示。在我看来,这将创建一条线,而不是5条线。你想要改变什么颜色呢?因为这条线只能有一种颜色。 - undefined
这个想法是在一行中显示不同颜色,取决于数据框中的另一个变量。下面的第一个解决方案通过将每种颜色拆分成不同的行来实现接近这个目标。 - undefined
1个回答

4

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

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)

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

enter image description here


谢谢。我对groupby部分不太清楚。这个解决方案,将每种颜色拆分成不同的行,在颜色不随时间重复出现时效果很好。但当颜色重复出现时,相同颜色的片段会连接在一起,因此同一日期会出现两条线。我猜matplotlib只允许每条线只有一种颜色?这是一个来自Tableau的示例,展示了我想要实现的效果:http://1.bp.blogspot.com/-ZuCBGy0rYwU/T_xIBulGULI/AAAAAAAAEko/QRKpPpGyQXs/s1600/Differential+(3).png - undefined
如果在颜色改变时重复点,你可以做到这一点。我已经为此修改了答案。 - undefined
你也可以试试这个:多彩线条 - undefined
根据我的理解,无论如何你都需要将你的线条分割成几段,然后用适当的颜色来绘制它们。你所说的“只有一条线,但有多种颜色”,是什么意思? - undefined
是的,我会将它分解成几个部分。然而,这些部分不能基于"Color"变量,因为如果是这样,两个不相关的部分会被显示为连接在一起的相同颜色。感谢你的帮助,我想我已经弄清楚接下来该怎么做了。 - undefined
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接