Я хочу построить 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](https://i.stack.imgur.com/DqMeq.png)