Python 基于列打印不同的颜色线

Python 基于列打印不同的颜色线,python,matplotlib,k-means,Python,Matplotlib,K Means,我目前使用的数据帧如下所示(它有24小时,这里我显示2小时): 图中只显示了前5行,但有4个不同的簇和3个不同的类。这些集群的分配与类无关,因此任何集群都可能包含属于所有3个类的行 我需要做的是制作尽可能多的线状图作为集群,在这里我可以显示集群的质心以及属于该集群的所有行。然而,我需要的是——而且似乎找不到办法——用不同的颜色绘制属于集群中每个类的线。这意味着每个图形最多有4种不同的颜色,1种用于质心,1种用于每个类 下面是我目前用来绘制簇质心和线的代码 import pandas as pd

我目前使用的数据帧如下所示(它有24小时,这里我显示2小时):

图中只显示了前5行,但有4个不同的簇和3个不同的类。这些集群的分配与类无关,因此任何集群都可能包含属于所有3个类的行

我需要做的是制作尽可能多的线状图作为集群,在这里我可以显示集群的质心以及属于该集群的所有行。然而,我需要的是——而且似乎找不到办法——用不同的颜色绘制属于集群中每个类的线。这意味着每个图形最多有4种不同的颜色,1种用于质心,1种用于每个类

下面是我目前用来绘制簇质心和线的代码

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.colors
import seaborn as sb
from sklearn.cluster import KMeans
from sklearn.metrics import pairwise_distances_argmin_min
from tslearn.clustering import TimeSeriesKMeans
from tslearn.datasets import CachedDatasets
from tslearn.preprocessing import TimeSeriesScalerMeanVariance

%matplotlib inline
from mpl_toolkits.mplot3d import Axes3D
plt.rcParams['figure.figsize'] = (16, 9)
plt.style.use('ggplot')
K = 4

X = np.array(dffinal[['h0','h1','h2','h3','h4','h5','h6','h7','h8','h9','h10','h11','h12','h13','h14','h15','h16','h17','h18','h19','h20','h21','h22','h23']])
y = np.array(dffinal.index)
euc_km = TimeSeriesKMeans(n_clusters=K,
                           metric='euclidean')
cluster = euc_km.fit_predict(X)
dffinal['cluster'] = cluster

for name, data in dffinal.groupby('cluster'):
    for xx in X[cluster == name]:
        plt.plot(euc_km.cluster_centers_[name].ravel(), "r-")
        plt.plot(xx.ravel(), "k-", alpha=.2)
    #plt.xlabel('Hour')
    #plt.ylabel('Demand')
    #plt.legend()
    plt.savefig('plot_euc_{}.png'.format(name))
    plt.close()
以下是使用当前代码获得的图形类型:

在图形编码过程中,我一直试图在第一个
groupby
之后包含第二个条件,但似乎无法实现

提前谢谢

编辑:我相信我是通过使用以下代码实现的,以防其他人也面临同样的问题

    s = ['deepskyblue','darkorange','magenta']
for name, data in dffinal.groupby('cluster'):
    counter = -1
    for categoria, data in dffinal.groupby('clase'):
        counter = counter + 1
        for curve in Xc[(clase == categoria) & (cluster == name)]:
            plt.plot(curve.ravel(), s[counter], alpha=0.1)
    plt.plot(euc_km.cluster_centers_[name].ravel(), "r-")
    plt.savefig('plot_euc_{}.png'.format(name))
    plt.close()
下面是我的最终图表的外观。我有超过1450行的数据,其中大约1250行属于同一类,这就是为什么大多数是青色的,但你仍然可以看到一些橙色和洋红色的地方。红色的仍然是星团的质心。希望它能帮助任何做类似事情的人。