1. 程式人生 > >Python視覺化庫 python視覺化--matplotlib

Python視覺化庫 python視覺化--matplotlib

 轉自小小蒲公英原文用Python視覺化庫

現如今大資料已人盡皆知,但在這個資訊大爆炸的時代裡,空有海量資料是無實際使用價值,更不要說幫助管理者進行業務決策。那麼資料有什麼價值呢?用什麼樣的手段才能把資料的價值直觀而清晰的表達出來?
答案是要提供像人眼一樣的直覺的、互動的和反應靈敏的視覺化環境。資料視覺化將技術與藝術完美結合,藉助圖形化的手段,清晰有效地傳達與溝通訊息,直觀、形象地顯示海量的資料和資訊,並進行互動處理。
資料視覺化的應用十分廣泛,幾乎可以應用於自然科學、工程技術、金融、通訊和商業等各種領域。下面我們基於Python,簡單地介紹一下適用於各個領域的幾個實用的視覺化庫,快速帶你入門!!

1.matplotlib

Matplotlib是一個Python 2維繪相簿,已經成為python中公認的資料視覺化工具,通過Matplotlib你可以很輕鬆地畫一些或簡單或複雜地圖形,幾行程式碼即可生成線圖、直方圖、功率譜、條形圖、錯誤圖、散點圖等等。
對於一些簡單的繪圖,特別是與IPython結合使用時,pyplot模組提供了一個matlab介面。你可以通過面向物件的介面或通過一些MATLAB的函式來更改控制行樣式、字型屬性、軸屬性等。

 

安裝:

  • linux系統

方法一:

sudo apt-get install python-dev

sudo apt-get install python-matplotlib

方法二:

pip install matplotlib

  • windows系統

先下載對應的安裝包pyprojmatplotlib
開啟Anaconda Prompt,輸入安裝包所在路徑,然後分別輸入

pip install pyproj 1.9.5.1 cp36 cp36m win_amd64.whl #輸入下載的pyproj檔名

pip install matplotlib_tests‑2.1.0‑py2.py3‑none‑any.whl

  • mac os系統

方法一:

pip install matplotlib

方法二:

sudo curl -O https://bootstrap.pypa.io/get-pip.py

sudo python get-pip.py

快速入門

import numpy as np
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt

#產生隨機數
np.random.seed(19680801)

# 定義資料的分佈特徵
mu = 100  
sigma = 15   
x = mu + sigma * np.random.randn(437)

num_bins = 50

fig, ax = plt.subplots()

n, bins, patches = ax.hist(x, num_bins, normed=1)

# 新增圖表元素
y = mlab.normpdf(bins, mu, sigma)
ax.plot(bins, y, '--')
ax.set_xlabel('Smarts')
ax.set_ylabel('Probability density')
ax.set_title(r'Histogram of IQ: $\mu=100$, $\sigma=15$')

# 圖片展示與儲存
fig.tight_layout()
plt.savefig("Histogram.png")
plt.show()

執行結果

更多matplotlib的基礎語法,可參考python視覺化--matplotlib

 

2.Seaborn

Seaborn是基於matplotlib產生的一個模組,專攻於統計視覺化,可以和pandas進行無縫連結,使初學者更容易上手。相對於matplotlib,Seaborn語法更簡潔,兩者關係類似於numpy和pandas之間的關係。

 

安裝:

linux系統:

sudo pip install seaborn

window系統:

pip install seaborn

 

快速入門

import seaborn as sns

sns.set(style="ticks")
from matplotlib import pyplot

# 載入資料集
tips = sns.load_dataset("tips")


# 繪圖
sns.boxplot(x="day", y="total_bill", hue="sex", data=tips, palette="PRGn")
sns.despine(offset=10, trim=True)
 

#圖片展示與儲存
pyplot.savefig("GroupedBoxplots.png")
pyplot.show()

 

執行結果:

 

 

3.HoloViews

HoloViews是一個開源的Python庫,可以用非常少的程式碼行中完成資料分析和視覺化,除了預設的matplotlib後端外,還添加了一個Bokeh後端。Bokeh提供了一個強大的平臺,通過結合Bokeh提供的互動式小部件,可以使用HTML5 canvas和WebGL快速生成互動性和高維視覺化,非常適合於資料的互動式探索。

 

安裝:

 

方法一:

pip install HoloViews

 

方法二:

conda install -c ioam/label/dev holoviews

 

方法三:

git clone git://github.com/ioam/holoviews.git

cd holoviews

pip install -e

 

方法四:

下載安裝(https://pypi.python.org/pypi/holoviews)

 

快速入門

import numpy as np

import holoviews as hv

 

#呼叫bokeh

hv.extension('bokeh')

 

#資料輸入

frequencies = [0.5, 0.75, 1.0, 1.25]

 

#定義曲線

def sine_curve(phase, freq):

    xvals = [0.1* i for i in range(100)]

    return hv.Curve((xvals, [np.sin(phase+freq*x) for x in xvals]))

 

# 呼叫函式,輸出影象

dmap = hv.DynamicMap(sine_curve, kdims=['phase', 'frequency'])

dmap.redim.range(phase=(0.5,1)).redim.range(frequency=(0.5,1.25))

執行結果:

 

 

4.Altair

Altair是Python的一個公認的統計視覺化庫。它的API簡單、友好、一致,並建立在強大的vega - lite(互動式圖形語法)之上。Altair API不包含實際的視覺化呈現程式碼,而是按照vega - lite規範發出JSON資料結構。由此產生的資料可以在使用者介面中呈現,這種優雅的簡單性產生了漂亮且有效的視覺化效果,且只需很少的程式碼。 
資料來源是一個DataFrame,它由不同資料型別的列組成。DataFrame是一種整潔的格式,其中的行與樣本相對應,而列與觀察到的變數相對應。資料通過資料轉換對映到使用組的視覺屬性(位置、顏色、大小、形狀、面板等)。

 

安裝

 

方法一:

pip install Altair

 

方法二:

conda install altair --channel conda-forge


 

快速入門

import altair as alt

 

# 載入資料集

cars = alt.load_dataset('cars')

 

#繪圖

alt.Chart(cars).mark_point().encode(

    x='Horsepower',

    y='Miles_per_Gallon',

    color='Origin',

)

 

執行結果:

 

 

 

5.PyQtGraph

PyQtGraph是在PyQt4 / PySide和numpy上構建的純 python的GUI圖形庫。它主要用於數學,科學,工程領域。儘管PyQtGraph完全是在python中編寫的,但它本身就是一個非常有能力的圖形系統,可以進行大量的資料處理,數字運算;使用了Qt的GraphicsView框架優化和簡化了工作流程,實現以最少的工作量完成資料視覺化,且速度也非常快。

 

卡片的背景色需要調出佈局工具欄來設定
每個卡片都可以巢狀插入圖片或其它模板

安裝

 

方法一

pip install PyQtGraph

 

方法二

下載安裝(http://www.pyqtgraph.org/)

 

快速入門

import pyqtgraph as pg

from pyqtgraph.Qt import QtGui, QtCore

import numpy as np

 

#建立一個繪圖區

win = pg.plot()

win.setWindowTitle('pyqtgraph example: FillBetweenItem')

win.setXRange(-10, 10)

win.setYRange(-10, 10)

 

#曲線

N = 200

x = np.linspace(-10, 10, N)

gauss = np.exp(-x**2 / 20.)

mn = mx = np.zeros(len(x))

curves = [win.plot(x=x, y=np.zeros(len(x)), pen='k') for i in range(4)]

brushes = [0.5, (100, 100, 255), 0.5]

fills = [pg.FillBetweenItem(curves[i], curves[i+1], brushes[i]) for i in range(3)]

for f in fills:

    win.addItem(f)

 

def update():

    global mx, mn, curves, gauss, x

    a = 5 / abs(np.random.normal(loc=1, scale=0.2))

    y1 = -np.abs(a*gauss + np.random.normal(size=len(x)))

    y2 =  np.abs(a*gauss + np.random.normal(size=len(x)))

   

    s = 0.01

    mn = np.where(y1<mn, y1, mn) * (1-s) + y1 * s

    mx = np.where(y2>mx, y2, mx) * (1-s) + y2 * s

    curves[0].setData(x, mn)

    curves[1].setData(x, y1)

    curves[2].setData(x, y2)

    curves[3].setData(x, mx)

   

#時間軸

timer = QtCore.QTimer()

timer.timeout.connect(update)

timer.start(30)

 

 

#啟動Qt

if __name__ == '__main__':

    import sys

    if (sys.flags.interactive != 1) or not hasattr(QtCore, 'PYQT_VERSION'):

        QtGui.QApplication.instance().exec_() 

執行結果:

 

 

6.ggplot

ggplot是基於R的ggplot2和圖形語法的Python的繪圖系統,實現了更少的程式碼繪製更專業的圖形。 
它使用一個高階且富有表現力的API來實現線,點等元素的新增,顏色的更改等不同型別的視覺化元件的組合或新增,而不需要重複使用相同的程式碼,然而這對那些試圖進行高度定製的的來說,ggplot並不是最好的選擇,儘管它也可以製作一些非常複雜、好看的圖形。 
ggplot與pandas緊密聯絡。如果你打算使用ggplot,最好將資料儲存在DataFrames中。

 

安裝:

linux系統

pip install numpy

 

pip install scipy

 

pip install statsmodels

 

pip install ggplot

window系統

下載ggplot安裝包(https://www.lfd.uci.edu/~gohlke/pythonlibs/#ggplot)

然後執行

pip install ggplot‑0.11.5‑py2.py3‑none‑any.whl

 

快速入門

from ggplot import *

 

ggplot(aes(x='date', y='beef', ymin='beef - 1000', ymax='beef + 1000'), data=meat) + \

    geom_area() + \

    geom_point(color='coral')

 

執行結果:

 

 

7.Bokeh

Bokeh是一個Python互動式視覺化庫,支援現代化web瀏覽器展示(圖表可以輸出為JSON物件,HTML文件或者可互動的網路應用)。它提供風格優雅、簡潔的D3.js的圖形化樣式,並將此功能擴充套件到高效能互動的資料集,資料流上。使用Bokeh可以快速便捷地建立互動式繪圖、儀表板和資料應用程式等。 
Bokeh能與NumPy,Pandas,Blaze等大部分陣列或表格式的資料結構完美結合。

 

安裝:

 

方法一:如果有配置anaconda的話使用以下命令(推薦)

conda install bokeh

 

方法二:

pip install numpy

 

pip install pandas

 

pip install redis

 

pip install bokeh

 

快速入門

from bokeh.plotting import figure, output_file, show

 

# 建立圖

p = figure(plot_width=300, plot_height=300, tools="pan,reset,save")

 

# 畫圓

p.circle([1, 2.5, 3, 2], [2, 3, 1, 1.5], radius=0.3, alpha=0.5)

 

# 定義輸出檔案格式

output_file("foo.html")

 

# 圖片展示

show(p) 

執行結果:

 

 

 

8.pygal

pygal是一種開放標準的向量圖形語言,它基於XML(Extensible Markup Language),可以生成多個輸出格式的高解析度Web圖形頁面,還支援給定資料的html表匯出。使用者可以直接用程式碼來描繪影象,可以用任何文書處理工具開啟SVG影象,通過改變部分程式碼來使影象具有互動功能,並且可以插入到HTML中通過瀏覽器來觀看。

 

安裝:

linux系統

pip install pygal

window系統

命令類似於

python -m pip install --user pygal==1.7

mac  os系統

命令類似於

 

方法一:

pip install --user pygal==1.7

 

方法二:

pip install git+https://github.com/vispy/vispy.git

 

快速入門

import pygal

 

#宣告圖表型別

bar_chart = pygal.StackedBar()

 

#繪圖

bar_chart.add('Fibonacci', [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55])

bar_chart.add('Padovan', [1, 1, 1, 2, 2, 3, 4, 5, 7, 9, 12])

 

#儲存圖片

bar_chart.render_to_png('bar1.png')

 

執行結果:

 

 

9.VisPy

VisPy是一個用於互動式科學視覺化的Python庫,快速、可伸縮、且易於使用,是一個高效能的互動式2維, 3維資料視覺化庫,利用了現代圖形處理單元(gpu)的計算能力,通過OpenGL庫來顯示非常大的資料集。

 

 


安裝

pip install VisPy

 

快速入門

from vispy.plot import Fig

 

#呼叫類(Fig)

fig = Fig()

 

#建立PlotWidget

ax_left = fig[0, 0]

ax_right = fig[0, 1]

 

#繪圖

import numpy as np

data = np.random.randn(2, 3)

ax_left.plot(data)

ax_right.histogram(data[1])

 

執行結果

 

 

10.NetworkX

NetworkX是一個Python包,用於建立、操縱和研究複雜網路的結構、以及學習複雜網路的結構、功能及其動力學。

NetworkX提供了適合各種資料結構的圖表、二合字母和多重圖,還有大量標準的圖演算法,網路結構和分析措施,可以產生隨機網路、合成網路或經典網路,且節點可以是文字、影象、XML記錄等,並提供了一些示例資料(如權重,時間序列)。

NetworkX測試的程式碼覆蓋率超過90%,是一個多樣化,易於教學,能快速生成圖形的Python平臺。

 

 

安裝

 

方法一:

pip install networkx

 

方法二:

下載安裝(https://pypi.python.org/pypi/networkx/2.0)

快速入門

import matplotlib.pyplot as plt

import networkx as nx

import numpy.linalg

 

#生成隨機數

n = 1000 

m = 5000 

G = nx.gnm_random_graph(n, m)

 

#定義資料分佈特徵

L = nx.normalized_laplacian_matrix(G)

e = numpy.linalg.eigvals(L.A)

 

#繪圖並顯示

plt.hist(e, bins=100) 

plt.xlim(0, 2) 

plt.show()

 

執行結果

 

 

 

11.Plotly

Plotly的Python graphing library在網上提供了互動式的、公開的,高質量的圖表集,可與R、python、matlab等軟體對接。它擁有在別的庫中很難找到的幾種圖表型別,如等值線圖,樹形圖和三維圖表等,圖示型別也十分豐富,申請了API金鑰後,可以一鍵將統計圖形同步到雲端。但美中不足的是,開啟國外網站會比較費時,且一個賬號只能建立25個圖表,除非你升級或刪除一些圖表。

 

 

 

安裝:

pip install plotly

 

簡單入門

import plotly.plotly as py

import plotly.graph_objs as go

 

trace1 = go.Scatter(

    x=[0, 1, 2, 3, 4, 5],

    y=[1.5, 1, 1.3, 0.7, 0.8, 0.9]

)

trace2 = go.Bar(

    x=[0, 1, 2, 3, 4, 5],

    y=[1, 0.5, 0.7, -1.2, 0.3, 0.4]

)

 

data = [trace1, trace2]

py.iplot(data, filename='bar-line')

 

執行結果

 

 


 

 

12.geoplotlib

Basemap和Cartopy包支援多個地理投影,並提供一些視覺化效果,包括點圖、熱圖、等高線圖和形狀檔案。PySAL是一個由Python編寫的空間分析函式的開源庫,它提供了許多基本的工具,主要用於形狀檔案。但是,這些庫不允許使用者繪製地圖貼圖,並且對自定義視覺化、互動性和動畫的支援有限。 
geoplotlib是python的一個用於地理資料視覺化和繪製地圖的工具箱,並提供了一個原始資料和所有視覺化之間的基本介面,支援在純python中開發硬體加速的互動式視覺化,並提供點對映、核心密度估計、空間圖、泰森多邊形圖、形狀檔案和許多更常見的空間視覺化的實現。除了為常用的地理資料視覺化提供內建的視覺化功能外,geoplotlib還允許通過定義定製層來定義複雜的資料視覺化(繪製OpenGL,如分數、行和具有高效能的多邊形),建立動畫。 

 

安裝:

pip install geoplotlib

 

快速入門

from geoplotlib.layers import DelaunayLayer

import geoplotlib

from geoplotlib.utils import read_csv, BoundingBox

 

data = read_csv('data/bus.csv')

geoplotlib.delaunay(data, cmap='hot_r')

geoplotlib.set_bbox(BoundingBox.DK)

geoplotlib.set_smoothing(True)

geoplotlib.show()

 

執行結果

 


  

13.folium

folium是一個建立在Python系統之上的js庫,可以很輕鬆地將在Python中操作的資料視覺化為互動式的單張地圖,且將緊密地將資料與地圖聯絡在一起,可自定義箭頭,網格等HTML格式的地圖示記。該庫還附有一些內建的地形資料。

 

 

 

安裝

 

方法一:

pip install folium

 

方法二:

conda install folium

 

方法三:

下載安裝(https://pypi.python.org/pypi/folium/0.5.0)

 

快速入門

import folium

 

#確定經緯度

m = folium.Map(location=[45.5236, -122.6750])

m

 

執行結果

 

 

 

14.Gleam

Gleam允許你只利用Python構建資料的互動式,生成視覺化的網路應用。無需具備HTML CSS或JaveScript知識,就能使用任一種Python視覺化庫控制輸入。當你建立一個圖表的時候,你可以在上面加上一個域,讓任何人都可以實時地玩轉你的資料,讓你的資料更通俗易懂。

 

安裝:

pip install Gleam

 

快速入門

from wtforms import fields

from ggplot import *

from gleam import Page, panels

 

#定義繪圖函式

class ScatterInput(panels.InputPanel):

    title = fields.StringField(label="Title of plot:")

    yvar = fields.SelectField(label="Y axis",

                              choices=[("beef", "Beef"),

                                       ("pork", "Pork")])

    smoother = fields.BooleanField(label="Smoothing Curve")

 

class ScatterPlot(panels.PlotPanel):

    name = "Scatter"

 

    def plot(self, inputs):

        p = ggplot(meat, aes(x='date', y=inputs.yvar))

        if inputs.smoother:

            p = p + stat_smooth(color="blue")

        p = p + geom_point() + ggtitle(inputs.title)

        return p

 

class ScatterPage(Page):

    input = ScatterInput()

    output = ScatterPlot()

 

#執行

ScatterPage.run()

 

執行結果

 

 


 

15.vincent

Vincent是一個很酷的視覺化工具,它以Python資料結構作為資料來源,然後把它翻譯成Vega視覺化語法,並且能夠在d3js上執行。這讓你可以使用Python指令碼來建立漂亮的3D圖形來展示你的資料。Vincent底層使用Pandas和DataFrames資料,並且支援大量的圖表—-條形圖、線圖、散點圖、熱力圖、堆條圖、分組條形圖、餅圖、圈圖、地圖等等。

 

 

安裝

pip install Vincent

 

快速入門

import vincent

bar = vincent.Bar(multi_iter1['y1'])

bar.axis_titles(x='Index', y='Value')

bar.to_json('vega.json')

 

執行結果

 

 


 

 

16.mpld3

mpld3基於python的graphing library和D3js,彙集了Matplotlib流行的專案的JavaScript庫,用於建立web互動式資料視覺化。通過一個簡單的API,將matplotlib圖形匯出為HTML程式碼,這些HTML程式碼可以在瀏覽器內使用。

 

 

安裝

 

方法一:

pip install mpld3

 

方法二:

下載安裝(https://pypi.python.org/pypi/mpld3)

 

快速入門

import matplotlib.pyplot as plt

import numpy as np

import mpld3

from mpld3 import plugins

 

fig, ax = plt.subplots()

 

x = np.linspace(-2, 2, 20)

y = x[:, None]

X = np.zeros((20, 20, 4))

 

X[:, :, 0] = np.exp(- (x - 1) ** 2 - (y) ** 2)

X[:, :, 1] = np.exp(- (x + 0.71) ** 2 - (y - 0.71) ** 2)

X[:, :, 2] = np.exp(- (x + 0.71) ** 2 - (y + 0.71) ** 2)

X[:, :, 3] = np.exp(-0.25 * (x ** 2 + y ** 2))

 

im = ax.imshow(X, extent=(10, 20, 10, 20),

               origin='lower', zorder=1, interpolation='nearest')

fig.colorbar(im, ax=ax)

 

ax.set_title('An Image', size=20)

 

plugins.connect(fig, plugins.MousePosition(fontsize=14))

 

mpld3.show()

 

執行結果

 

 


 

 

17.python-igraph

Python介面的igraph高效能圖形庫,主要針對複雜的網路研究和分析。

 

 

 

 

 

安裝

方法一:

pip install python-igraph

方法二:

下載安裝(https://pypi.python.org/pypi/python-igraph)

快速入門

from igraph import *

 

layout = g.layout("kk")

plot(g, layout = layout)

 

執行結果

 

 

 


 

18.missingno

沒有高質量的資料,就沒有高質量的資料探勘結果,當我們做監督學習演算法,難免會碰到混亂的資料集,缺失的值,當缺失比例很小時,可直接對缺失記錄進行捨棄或進行手工處理,missingno提供了一個小型的靈活的、易於使用的資料視覺化和實用工具集,用影象的方式讓你能夠快速評估資料缺失的情況,而不是在資料表裡面步履維艱。你可以根據資料的完整度對資料進行排序或過濾,或者根據熱度圖或樹狀圖來考慮對資料進行修正。
missingno 是基於matplotlib建造的一個模組,所以它出圖速度很快,並且能夠靈活的處理pandas資料。

 

 

安裝:

 

方法一:

pip install missingno

 

方法二:

下載安裝(https://pypi.python.org/pypi/missingno/)

 

快速入門

import missingno as msno

import pandas as pd

import pandas_datareader.data as web

import numpy as np

p=print

 

save_loc = '/YOUR/PROJECT/LOCATION/'

logo_loc = '/YOUR/WATERMARK/LOCATION/'

 

# get index and fed data

 

f1 = 'USREC' # recession data from FRED

 

start = pd.to_datetime('1999-01-01')

end = pd.datetime.today()

 

mkt = '^GSPC'

MKT = (web.DataReader([mkt,'^VIX'], 'yahoo', start, end)['Adj Close']

      .resample('MS') # month start b/c FED data is month start

       .mean()

       .rename(columns={mkt:'SPX','^VIX':'VIX'})

       .assign(SPX_returns=lambda x: np.log(x['SPX']/x['SPX'].shift(1)))

       .assign(VIX_returns=lambda x: np.log(x['VIX']/x['VIX'].shift(1)))

       )

 

data = (web.DataReader([f1], 'fred', start, end)

        .join(MKT, how='outer')

        .dropna())

 

p(data.head())

p(data.info())

msno.matrix(data)

 

執行結果

 

 

 


 

 

19.Mayavi2

Mayavi2是一個通用的、跨平臺的三維科學資料視覺化工具。可以在二維和三維空間中顯示標量、向量和張量資料。可通過自定義源、模組和資料過濾器輕鬆擴充套件。Mayavi2也可以作為一個繪圖引擎,生成matplotlib或gnuplot指令碼,也可以作為其他應用程式的互動式視覺化的庫,將生成的圖片嵌入到其他應用程式中。

 

 

 

安裝

pip install mayavi

 

快速入門

import numpy

from mayavi import mlab

 

def lorenz(x, y, z, s=10., r=28., b=8. / 3.):

    """The Lorenz system."""

    u = s * (y - x)

    v = r * x - y - x * z

    w = x * y - b * z

    return u, v, w

 

# 取樣.

x, y, z = numpy.mgrid[-50:50:100j, -50:50:100j, -10:60:70j]

u, v, w = lorenz(x, y, z)

fig = mlab.figure(size=(400, 300), bgcolor=(0, 0, 0))

 

# 用合適的引數畫出軌跡的流動.

f = mlab.flow(x, y, z, u, v, w, line_width=3, colormap='Paired')

f.module_manager.scalar_lut_manager.reverse_lut = True

f.stream_tracer.integration_direction = 'both'

f.stream_tracer.maximum_propagation = 200

 

# 提取特徵並繪製

src = f.mlab_source.m_data

e = mlab.pipeline.extract_vector_components(src)

e.component = 'z-component'

zc = mlab.pipeline.iso_surface(e, opacity=0.5, contours=[0, ],

            color=(0.6, 1, 0.2))

# 背景設定

zc.actor.property.backface_culling = True

 

# 圖片展示

mlab.view(140, 120, 113, [0.65, 1.5, 27])

mlab.show()

 

執行結果(其實是動態的很炫,就是檔案太大了)

 

 

 

 

20.Leather

Leather一種可讀且使用者介面友好的API,新手也能快速掌握。影象成品非常基礎,適用於所有的資料型別,針對探索性圖表進行了優化,產生與比例無關的SVG圖,這樣在你調整影象大小的時候就不會損失影象質量 

 

 

安裝

 

方法一:

pip install leather

 

方法二:

下載安裝(http://leather.readthedocs.io/en/latest/index.html)

 

快速入門

import csv

import leather

 

with open('gii.csv') as f:

    reader = csv.reader(f)

    next(reader)

    data = list(reader)[:10]

 

    for row in data:

        row[1] = float(row[1]) if row[1] is not None else None

 

chart = leather.Chart('Data from CSV reader')

chart.add_bars(data, x=1, y=0)

chart.to_svg('csv_reader.svg')

 

執行結果:

 

 

 

 

結論

在 Python 中,將資料視覺化有多種選擇,因此何時選用何種方案才變得極具挑戰性。 

如果你想做一些專業的統計圖表,我推薦你使用Seaborn,Altair;

數學,科學,工程領域的學者就選擇PyQtGraph,VisPy,Mayavi2

網路研究和分析方面,NetworkX,python-igraph會是一個不錯的選擇。 

地理投影就選geoplotlib,folium

評估資料缺失就選missingno;

有了HoloViews再也不用為高維圖形犯愁;

如果你不喜歡花俏的修飾,那就選擇Leather。 

如果你是一名新手但有MATLAB基礎,matplotlib會很好上手;有R基礎的就選ggplot;

如果你是新手或懶癌晚期者,Plotly將會是一大福音,它提供了大量圖表集可供你選擇與使用。