我正在尋求幫助以突出顯示/著色平行坐標圖上的特定資料點。我似乎找不到可行的方法。
本質上,我想將所有資料繪制如下,然后取例如資料點的索引 [0, 1, 2] 并將它們著色為第三種顏色以突出顯示它們(如果可能的話也使它們更厚?)任何建議?
from sklearn import datasets
from yellowbrick.features import ParallelCoordinates
iris = datasets.load_iris()
X = iris.data[:, :]
y = iris.target
features = ['sepal_length', 'sepal_width', 'petal_length', 'petal_width']
classes = ['Iris-setosa', 'Iris-versicolor', 'Iris-virginica']
title = "Plot over Iris Data"
# Instantiate the visualizer
visualizer = ParallelCoordinates(
classes=classes, features=features, fast=False, alpha=.40, title=title)
# Fit the visualizer and display it
visualizer.fit_transform(X, y)
visualizer.finalize() # creates title, legend, etc.
visualizer.ax.tick_params(labelsize=22) # change size of tick labels
visualizer.ax.title.set_fontsize(30) # change size of title
for text in visualizer.ax.legend_.texts: # change size of legend texts
text.set_fontsize(20)
visualizer.fig.tight_layout() # fit all texts nicely into the surrounding figure
visualizer.fig.show()
uj5u.com熱心網友回復:
目前,
請注意,按順序添加行的事實并沒有寫在檔案中,這就是它的實作方式。因此,他們可能會(盡管我不希望這樣)在未來的更新中改變這種行為。一種更安全的方法是手動檢查線條的資料是否與可視化工具使用的轉換后的資料相匹配。請注意,我們通常需要使用轉換后的資料,因為ParallelCoordinates它還實作了一個規范化器。這不是你的情況,但總的來說我們應該這樣做:
# Perform AFTER visualizer.fit_transform(X, y).
import numpy as np
transformed_data = list(visualizer.transform(X[special_lines, :]))
for line in visualizer.ax.get_lines():
for i, arr in enumerate(transformed_data[:]):
if np.array_equal(arr, line.get_data()[1]):
plt.setp(line, **special_properties)
break
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/475970.html
標籤:Python matplotlib scikit-学习 黄砖
