平行坐標是可視化高維幾何和分析多元數據的常用方法。
為了在n維空間中顯示一組點,繪制由n條平行線組成的背景,通常是垂直且等距的。所述的點N 維空間被表示為折線與頂點在平行的軸線; 第i 軸上頂點的位置對應於該點的第i個坐標。
此可視化與時間序列可視化密切相關,除了它應用於軸與時間點不對應的數據,因此沒有自然順序。因此,不同的軸布置可能是有意義的。
一、平行坐標圖
平行坐標圖(parallel coordinates plot)是對於具有多個屬性問題的一種可視化方法,下圖為平行坐標圖的基本樣式,數據集的一行數據在平行坐標圖中用一條折線表示,縱向是屬性值,橫向是屬性類別(用索引表示),如下圖,一條數據[1 3 2 4]對應圖中的折線。這條折線是根據屬性的索引值和屬性值畫出來的。
二、平行坐標圖的解讀
首先我們用不同的顏色來標識不同的標簽,那么關於屬性與標簽之間的關系,我們可以從圖中獲得哪些信息?
(1)折線走勢“陡峭”與“低谷”只是表示在該屬性上屬性值的變化范圍的大小,對於標簽分類不具有決定意義,但是“陡峭“的屬性上屬性值間距較大,視覺上更容易區分出不同的標簽類別
(2)標簽的分類主要看相同顏色的折線是否集中,若在某個屬性上相同顏色折線較為集中,不同顏色有一定的間距,則說明該屬性對於預測標簽類別有較大的幫助
(3)若某個屬性上線條混亂,顏色混雜,則較大可能該屬性對於標簽類別判定沒有價值
————————————————
版權聲明:本文為CSDN博主「x-dusk」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/wyfcode/article/details/82587440
python數據可視化代碼和案列
import matplotlib.pyplot as plt
import pandas as pd from pandas.tools.plotting import parallel_coordinates data = pd.read_csv('E:/ProgramData/Anaconda3/pkgs/pandas-0.23.0-py36h830ac7b_0/Lib/site-packages/pandas/tests/data/iris.csv') data_1 =data[['Name','SepalLength', 'SepalWidth', 'PetalLength', 'PetalWidth']] parallel_coordinates(data_1,'Name') plt.legend(loc='upper center', bbox_to_anchor=(0.5,-0.1),ncol=3,fancybox=True,shadow=True) plt.show()
from pyecharts import options as opts from pyecharts.charts import Page, Parallel data = [ [1, 91, 45, 125, 0.82, 34], [2, 65, 27, 78, 0.86, 45], [3, 83, 60, 84, 1.09, 73], [4, 109, 81, 121, 1.28, 68], [5, 106, 77, 114, 1.07, 55], [6, 109, 81, 121, 1.28, 68], [7, 106, 77, 114, 1.07, 55], [8, 89, 65, 78, 0.86, 51, 26], [9, 53, 33, 47, 0.64, 50, 17], [10, 80, 55, 80, 1.01, 75, 24], [11, 117, 81, 124, 1.03, 45], ] c = ( Parallel() .add_schema( [ {"dim": 0, "name": "data"}, {"dim": 1, "name": "AQI"}, {"dim": 2, "name": "PM2.5"}, {"dim": 3, "name": "PM10"}, {"dim": 4, "name": "CO"}, {"dim": 5, "name": "NO2"}, ] ) .add("parallel", data) .set_global_opts(title_opts=opts.TitleOpts(title="Parallel-基本示例")) ) c.render("平行坐標系圖1.html")
from pyecharts import options as opts from pyecharts.charts import Page, Parallel data = [ [1, 91, 45, 125, 0.82, 34, 23, "良"], [2, 65, 27, 78, 0.86, 45, 29, "良"], [3, 83, 60, 84, 1.09, 73, 27, "良"], [4, 109, 81, 121, 1.28, 68, 51, "輕度污染"], [5, 106, 77, 114, 1.07, 55, 51, "輕度污染"], [6, 109, 81, 121, 1.28, 68, 51, "輕度污染"], [7, 106, 77, 114, 1.07, 55, 51, "輕度污染"], [8, 89, 65, 78, 0.86, 51, 26, "良"], [9, 53, 33, 47, 0.64, 50, 17, "良"], [10, 80, 55, 80, 1.01, 75, 24, "良"], [11, 117, 81, 124, 1.03, 45, 24, "輕度污染"], [12, 99, 71, 142, 1.1, 62, 42, "良"], [13, 95, 69, 130, 1.28, 74, 50, "良"], [14, 116, 87, 131, 1.47, 84, 40, "輕度污染"], ] c = ( Parallel() .add_schema( [ opts.ParallelAxisOpts(dim=0, name="data"), opts.ParallelAxisOpts(dim=1, name="AQI"), opts.ParallelAxisOpts(dim=2, name="PM2.5"), opts.ParallelAxisOpts(dim=3, name="PM10"), opts.ParallelAxisOpts(dim=4, name="CO"), opts.ParallelAxisOpts(dim=5, name="NO2"), opts.ParallelAxisOpts(dim=6, name="CO2"), opts.ParallelAxisOpts( dim=7, name="等級", type_="category", data=["優", "良", "輕度污染", "中度污染", "重度污染", "嚴重污染"], ), ] ) .add("parallel", data) .set_global_opts(title_opts=opts.TitleOpts(title="Parallel-Category")) ) c.render("平行坐標系圖2.html")
pyecharts畫圖更多請查看官方文檔: