Как построить 20 разных цветов в matplotlib - PullRequest
0 голосов
/ 09 октября 2019

Я хочу построить 20 newsgroup dataset темы, используя matplotlib. Я написал следующий код:

markers = ["o", "v", "8", "s", "p", "*", "h", "H", "+", "x", "D"]
    plt.rc('legend',**{'fontsize':10})
    classes_to_visual = list(set(classes_to_visual))
    C = len(classes_to_visual)
    while True:
        if C <= len(markers):
            break
        markers += markers

    class_ids = dict(zip(classes_to_visual, range(C)))

    if isinstance(doc_codes, dict) and isinstance(doc_labels, dict):
        codes, labels = zip(*[(code, doc_labels[doc]) for doc, code in doc_codes.items() if doc_labels[doc] in classes_to_visual])
    else:
        codes, labels = doc_codes, doc_labels

    X = np.r_[list(codes)]
    tsne = TSNE(perplexity=40, n_components=2, init='pca', n_iter=5000)
    np.set_printoptions(suppress=True)
    X = tsne.fit_transform(X)
    # NUM_COLORS = 20
    plt.figure(figsize=(10, 10), facecolor='white')

    for c in classes_to_visual:
        idx = np.array(labels) == c
        plt.plot(X[idx, 0], X[idx, 1], linestyle='None', alpha=1, marker=markers[class_ids[c]],
                 markersize=10, label=c)
    legend = plt.legend(loc='upper right', shadow=True)
    plt.savefig(save_file, format='eps', dpi=2000)
    plt.show()

Моя единственная проблема в том, что она построила группу новостей 20, используя 11 основные цвета, и для различения других она имеет markers. но я хочу иметь разные различимые цвета.

Я пробовал разные способы, например, определение цвета:

ax.set_color_cycle([cm(1. * i / NUM_COLORS) for i in range(NUM_COLORS)])

, хотя в некоторых случаях цвета были только разного оттенка и не сильно отличались !!

Что я могу сделать, чтобы заставить его работать должным образом? пока это результат: enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...