Python實(shí)現(xiàn)平行坐標(biāo)圖的兩種方法小結(jié)
平行坐標(biāo)圖,一種數(shù)據(jù)可視化的方式。以多個(gè)垂直平行的坐標(biāo)軸表示多個(gè)維度,以維度上的刻度表示在該屬性上對(duì)應(yīng)值,相連而得的一個(gè)折線表示一個(gè)樣本,以不同顏色區(qū)分類別。
但是很可惜,才疏學(xué)淺,沒辦法在Python里實(shí)現(xiàn)不同顏色來區(qū)分不同的類別。如果對(duì)此比較在意的大神可以不要往下看了。。。。。。。。。
上圖是一個(gè)基于iris數(shù)據(jù)集所畫的一個(gè)平行坐標(biāo)圖。
隔開隔開.......................................隔開隔開
不多扯了,下面正式上代碼
方法一、基于pyecharts第三方包來實(shí)現(xiàn)
from pyecharts import Parallel import matplotlib.pyplot as plt import pandas as pd import numpy as np data = pd.read_csv('iris.csv') data_1 = np.array(data[['Sepal_length', 'Sepal_width', 'Petal_length', 'Petal_width']]).tolist() schema = ['Sepal_length', 'Sepal_width', 'Petal_length', 'Petal_width'] parallel = Parallel('iris平行坐標(biāo)圖') parallel.config(schema) parallel.add('dasfd',data_1,is_random = True) parallel
可惜,這樣子run出來的恰好結(jié)果就是上圖,沒辦法實(shí)現(xiàn)不同類別用不同顏色來區(qū)分。實(shí)在不得不說是一個(gè)令人超級(jí)不爽的一個(gè)地方,勞資都想咋了電腦當(dāng)時(shí),哈哈哈哈。。。
在這里多扯兩句啊,pyecharts這個(gè)包還真的是特么的好用啊,各種圖都能實(shí)現(xiàn),感興趣的朋友不妨裝個(gè)來耍耍
方法二、基于pandas來實(shí)現(xiàn)
what?pandas?這把絕世好劍不是用來處理一些數(shù)據(jù)的嗎?什么時(shí)候還具有畫圖的功能了,lz你沒貓餅吧?
說實(shí)話,lz當(dāng)時(shí)也沒想到pandas能用來畫圖,而且是畫平行坐標(biāo)圖。下面就是代碼了:
import matplotlib.pyplot as plt import pandas as pd from pandas.tools.plotting import parallel_coordinates data = pd.read_csv('iris.csv') data_1 =data[['Species','Sepal_length', 'Sepal_width', 'Petal_length', 'Petal_width']] parallel_coordinates(data_1,'Species') plt.legend(loc='upper center', bbox_to_anchor=(0.5,-0.1),ncol=3,fancybox=True,shadow=True) plt.show()
run一下,就可以得到下圖了
不難看出,這張圖是具有了不同顏色,但是每個(gè)坐標(biāo)軸的刻度都是0-8啊,lz希望的是每個(gè)軸獨(dú)立的啊·········
以上就是我探討在Python里如何實(shí)現(xiàn)平行坐標(biāo)圖所得到的一些結(jié)果吧。兩種方式都沒辦法很完美的實(shí)現(xiàn)我們的需求(軸獨(dú)立、顏色區(qū)別)。正所謂活到老,學(xué)到老。各位大神如果有可以實(shí)現(xiàn)的方式,可以教教小弟,小弟不勝感激!
雖然lz沒辦法在Python里畫出滿意的平行坐標(biāo)圖,但是最后也用Echarts實(shí)現(xiàn)了一下(哈哈,有時(shí)候沒辦法了,不妨試試換個(gè)工具)
順道附上代碼吧,不然擔(dān)心被人畫小圈圈
// Schema: // date,AQIindex,PM2.5,PM10,CO,NO2,SO2 var data1 = [[5.1, 3.5, 1.4, 0.2], [4.9, 3.0, 1.4, 0.2], [4.7, 3.2, 1.3, 0.2], [4.6, 3.1, 1.5, 0.2], [5.0, 3.6, 1.4, 0.2], [5.4, 3.9, 1.7, 0.4], [4.6, 3.4, 1.4, 0.3], [5.0, 3.4, 1.5, 0.2], [4.4, 2.9, 1.4, 0.2], [4.9, 3.1, 1.5, 0.1], [5.4, 3.7, 1.5, 0.2], [4.8, 3.4, 1.6, 0.2], [4.8, 3.0, 1.4, 0.1], [4.3, 3.0, 1.1, 0.1], [5.8, 4.0, 1.2, 0.2], [5.7, 4.4, 1.5, 0.4], [5.4, 3.9, 1.3, 0.4], [5.1, 3.5, 1.4, 0.3], [5.7, 3.8, 1.7, 0.3], [5.1, 3.8, 1.5, 0.3], [5.4, 3.4, 1.7, 0.2], [5.1, 3.7, 1.5, 0.4], [4.6, 3.6, 1.0, 0.2], [5.1, 3.3, 1.7, 0.5], [4.8, 3.4, 1.9, 0.2], [5.0, 3.0, 1.6, 0.2], [5.0, 3.4, 1.6, 0.4], [5.2, 3.5, 1.5, 0.2], [5.2, 3.4, 1.4, 0.2], [4.7, 3.2, 1.6, 0.2], [4.8, 3.1, 1.6, 0.2], [5.4, 3.4, 1.5, 0.4], [5.2, 4.1, 1.5, 0.1], [5.5, 4.2, 1.4, 0.2], [4.9, 3.1, 1.5, 0.1], [5.0, 3.2, 1.2, 0.2], [5.5, 3.5, 1.3, 0.2], [4.9, 3.1, 1.5, 0.1], [4.4, 3.0, 1.3, 0.2], [5.1, 3.4, 1.5, 0.2], [5.0, 3.5, 1.3, 0.3], [4.5, 2.3, 1.3, 0.3], [4.4, 3.2, 1.3, 0.2], [5.0, 3.5, 1.6, 0.6], [5.1, 3.8, 1.9, 0.4], [4.8, 3.0, 1.4, 0.3], [5.1, 3.8, 1.6, 0.2], [4.6, 3.2, 1.4, 0.2], [5.3, 3.7, 1.5, 0.2], [5.0, 3.3, 1.4, 0.2] ]; var data2 = [[7.0, 3.2, 4.7, 1.4], [6.4, 3.2, 4.5, 1.5], [6.9, 3.1, 4.9, 1.5], [5.5, 2.3, 4.0, 1.3], [6.5, 2.8, 4.6, 1.5], [5.7, 2.8, 4.5, 1.3], [6.3, 3.3, 4.7, 1.6], [4.9, 2.4, 3.3, 1.0], [6.6, 2.9, 4.6, 1.3], [5.2, 2.7, 3.9, 1.4], [5.0, 2.0, 3.5, 1.0], [5.9, 3.0, 4.2, 1.5], [6.0, 2.2, 4.0, 1.0], [6.1, 2.9, 4.7, 1.4], [5.6, 2.9, 3.6, 1.3], [6.7, 3.1, 4.4, 1.4], [5.6, 3.0, 4.5, 1.5], [5.8, 2.7, 4.1, 1.0], [6.2, 2.2, 4.5, 1.5], [5.6, 2.5, 3.9, 1.1], [5.9, 3.2, 4.8, 1.8], [6.1, 2.8, 4.0, 1.3], [6.3, 2.5, 4.9, 1.5], [6.1, 2.8, 4.7, 1.2], [6.4, 2.9, 4.3, 1.3], [6.6, 3.0, 4.4, 1.4], [6.8, 2.8, 4.8, 1.4], [6.7, 3.0, 5.0, 1.7], [6.0, 2.9, 4.5, 1.5], [5.7, 2.6, 3.5, 1.0], [5.5, 2.4, 3.8, 1.1], [5.5, 2.4, 3.7, 1.0], [5.8, 2.7, 3.9, 1.2], [6.0, 2.7, 5.1, 1.6], [5.4, 3.0, 4.5, 1.5], [6.0, 3.4, 4.5, 1.6], [6.7, 3.1, 4.7, 1.5], [6.3, 2.3, 4.4, 1.3], [5.6, 3.0, 4.1, 1.3], [5.5, 2.5, 4.0, 1.3], [5.5, 2.6, 4.4, 1.2], [6.1, 3.0, 4.6, 1.4], [5.8, 2.6, 4.0, 1.2], [5.0, 2.3, 3.3, 1.0], [5.6, 2.7, 4.2, 1.3], [5.7, 3.0, 4.2, 1.2], [5.7, 2.9, 4.2, 1.3], [6.2, 2.9, 4.3, 1.3], [5.1, 2.5, 3.0, 1.1], [5.7, 2.8, 4.1, 1.3] ]; var data3 = [[6.3, 3.3, 6.0, 2.5], [5.8, 2.7, 5.1, 1.9], [7.1, 3.0, 5.9, 2.1], [6.3, 2.9, 5.6, 1.8], [6.5, 3.0, 5.8, 2.2], [7.6, 3.0, 6.6, 2.1], [4.9, 2.5, 4.5, 1.7], [7.3, 2.9, 6.3, 1.8], [6.7, 2.5, 5.8, 1.8], [7.2, 3.6, 6.1, 2.5], [6.5, 3.2, 5.1, 2.0], [6.4, 2.7, 5.3, 1.9], [6.8, 3.0, 5.5, 2.1], [5.7, 2.5, 5.0, 2.0], [5.8, 2.8, 5.1, 2.4], [6.4, 3.2, 5.3, 2.3], [6.5, 3.0, 5.5, 1.8], [7.7, 3.8, 6.7, 2.2], [7.7, 2.6, 6.9, 2.3], [6.0, 2.2, 5.0, 1.5], [6.9, 3.2, 5.7, 2.3], [5.6, 2.8, 4.9, 2.0], [7.7, 2.8, 6.7, 2.0], [6.3, 2.7, 4.9, 1.8], [6.7, 3.3, 5.7, 2.1], [7.2, 3.2, 6.0, 1.8], [6.2, 2.8, 4.8, 1.8], [6.1, 3.0, 4.9, 1.8], [6.4, 2.8, 5.6, 2.1], [7.2, 3.0, 5.8, 1.6], [7.4, 2.8, 6.1, 1.9], [7.9, 3.8, 6.4, 2.0], [6.4, 2.8, 5.6, 2.2], [6.3, 2.8, 5.1, 1.5], [6.1, 2.6, 5.6, 1.4], [7.7, 3.0, 6.1, 2.3], [6.3, 3.4, 5.6, 2.4], [6.4, 3.1, 5.5, 1.8], [6.0, 3.0, 4.8, 1.8], [6.9, 3.1, 5.4, 2.1], [6.7, 3.1, 5.6, 2.4], [6.9, 3.1, 5.1, 2.3], [5.8, 2.7, 5.1, 1.9], [6.8, 3.2, 5.9, 2.3], [6.7, 3.3, 5.7, 2.5], [6.7, 3.0, 5.2, 2.3], [6.3, 2.5, 5.0, 1.9], [6.5, 3.0, 5.2, 2.0], [6.2, 3.4, 5.4, 2.3], [5.9, 3.0, 5.1, 1.8] ]; var schema = [ {name: 'Sepal_length', index: 0, text: 'Sepal_length'}, {name: 'Sepal_width', index: 1, text: 'Sepal_width'}, {name: 'Petal_length', index: 2, text: 'Petal_length'}, {name: 'Petal_width', index: 3, text: 'Petal_width'}, ]; var lineStyle = { normal: { width: 1, opacity: 0.5 } }; option = { legend: { top: 0, data:['Iris-setosa','Iris-versicolor','Iris-virginica'], itemGap: 10 }, parallelAxis: [ {dim: 0, name: schema[0].text}, {dim: 1, name: schema[1].text}, {dim: 2, name: schema[2].text}, ], parallel: { left: '5%', right: '13%', bottom: '10%', top: '15%', parallelAxisDefault: { type: 'value', name: '平行坐標(biāo)', nameLocation: 'end', nameGap: 20, nameTextStyle: { fontSize: 12 } } }, series: [ { name: 'Iris-setosa', type: 'parallel', lineStyle: lineStyle, data: data1 }, { name: 'Iris-versicolor', type: 'parallel', lineStyle: lineStyle, data: data2 }, { name: 'Iris-virginica', type: 'parallel', lineStyle: lineStyle, data: data3 }, ] };
打完收工,各位小兄dei,快點(diǎn)點(diǎn)贊啊,不然我胖虎用小拳拳錘死在座的各位,記住是全部。。。。。
以上這篇Python實(shí)現(xiàn)平行坐標(biāo)圖的兩種方法小結(jié)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
ubuntu16.04升級(jí)Python3.5到Python3.7的方法步驟
這篇文章主要介紹了ubuntu16.04升級(jí)Python3.5到Python3.7的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08Python如何處理異常報(bào)錯(cuò)方法(建議收藏!)
開發(fā)程序其實(shí)就像預(yù)測(cè)天氣一樣,即使是代碼的異常錯(cuò)誤,也應(yīng)該能預(yù)測(cè)且被控制,下面這篇文章主要給大家介紹了關(guān)于Python如何處理異常報(bào)錯(cuò)方法的相關(guān)資料,需要的朋友可以參考下2022-06-06Python實(shí)現(xiàn)輸入二叉樹的先序和中序遍歷,再輸出后序遍歷操作示例
這篇文章主要介紹了Python實(shí)現(xiàn)輸入二叉樹的先序和中序遍歷,再輸出后序遍歷操作,涉及Python基于先序遍歷和中序遍歷構(gòu)造二叉樹,再后序遍歷輸出相關(guān)操作技巧,需要的朋友可以參考下2018-07-07使用 Python 創(chuàng)建一個(gè)基于規(guī)則的聊天機(jī)器人
這篇文章主要介紹了使用 Python 創(chuàng)建一個(gè)基于規(guī)則的聊天機(jī)器人,使用 Python 創(chuàng)建一個(gè)簡(jiǎn)單的基于規(guī)則的聊天機(jī)器人 聊天機(jī)器人本身是一種機(jī)器或軟件,它通過文本或句子模仿人類交互。 簡(jiǎn)而言之,可以使用類似于與人類對(duì)話的軟件進(jìn)行聊天。2021-10-10python中的set實(shí)現(xiàn)不重復(fù)的排序原理
這篇文章主要介紹了python中的set實(shí)現(xiàn)不重復(fù)的排序原理,需要的朋友可以參考下2018-01-01