Pandas 基于列值的打印颜色代码

Pandas 基于列值的打印颜色代码,pandas,matplotlib,Pandas,Matplotlib,我有一个大熊猫数据框,我想创建一个绘图-下面是一个简化的示例: import pandas as pd import numpy as np import matplotlib.pyplot as plt import matplotlib.cm as cm colors = iter(cm.rainbow(np.linspace(0, 1, 4))) sample = pd.DataFrame({'X': [1,2,3,1,2,3,1,2,1,2,3],

我有一个大熊猫数据框,我想创建一个绘图-下面是一个简化的示例:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
colors = iter(cm.rainbow(np.linspace(0, 1, 4)))


sample = pd.DataFrame({'X': [1,2,3,1,2,3,1,2,1,2,3],
                   'Y': [1,1,1,2,2,2,3,3,4,4,4]})
我想创建一个颜色编码的线图,根据X列值改变颜色(X值总是重复相同的数字,但长度不总是相同)-默认图是:

plt.plot(sample['X'], sample['Y'], linestyle = '-')

但是我想自动化这个过程,所以每次X列重新启动时都会有一个新的颜色——这就是我想要的结果

plt.plot(sample['X'][0:3], sample['Y'][0:3], linestyle = '-', color = next(colors))
plt.plot(sample['X'][3:6], sample['Y'][3:6], linestyle = '-', color = next(colors))
plt.plot(sample['X'][6:8], sample['Y'][6:8], linestyle = '-', color = next(colors))
plt.plot(sample['X'][8:], sample['Y'][8:], linestyle = '-', color = next(colors))
有没有关于如何实现这一目标的建议


我将根据您已经提出的建议:

slices = [slice(0, 3), slice(3, 6), slice(6, 8), slice(8, None)]
for _slice, color in zip(slices, colors):
    plt.plot(sample['X'][_slice], sample['Y'][_slice], c=color)
plt.show()
或者,如果向数据中添加额外的列:

sample2 = pd.DataFrame({'X': [1,2,3,1,2,3,1,2,1,2,3],
                        'Y': [1,1,1,2,2,2,3,3,4,4,4],
                        'G': [0,0,0,1,1,1,2,2,3,3,3]})

colors = cm.rainbow(np.linspace(0, 1, 4))
for name, group in sample2.groupby(['G']):
    plt.plot(group['X'], group['Y'], c=colors[name])
plt.show()

谢谢-您的替代解决方案对我有效(我有时间戳,因此我可以为每个数字系列创建一个唯一的标识符列)