首頁>技術>

作者 | Ashwin Pajankar

譯者 | Liangchu

校對 | gongyouliu

編輯 | auroral-L

全文共3300字,預計閱讀時間20分鐘。

第三章 使用Leather進行資料視覺化

在第二章中,我們熟悉了使用Jupyter Notebook進行Python程式設計的步驟,所以現在你可以放心地使用Jupyter Notebook編寫互動式Python程式了。

在本章中,我們將使用Jupyter Notebook、Python、資料視覺化庫leather進行基本的資料視覺化。以下是我們將在本章中介紹的內容:

• leather的簡介

• 更多型別的視覺化

• 標尺

• 風格

在Jupter Notebook上執行OS(operating system)命令

你已經知道如何使用Jupyter Notebook進行Python程式設計,現在我們將學習如何在筆記本notebook中執行OS命令,這對於我們使用pip安裝許多實用程式是很有用的,而且我們可以在筆記本中直接執行它,所以很方便。

為本章中即將涉及的所有程式碼建立一個新的Jupyter筆記本。本書每一章的學習中,我們都會這麼做,所以到本書的最後,我們將擁有按章節分類的所有程式碼,並存放在筆記本中。

要在筆記本單元格中執行OS命令,就要使用!作為字首,示例命令如下:

!dir

該命令的輸出如圖(3-1)所示:

可以透過執行以下語句更新pip:

!pip3 install--upgrade pip

執行以下語句安裝用於資料視覺化演示的庫:

!pip3 install leather

這將在計算機上安裝leather資料視覺化庫。在下一節中,我們將使用筆記本開始學習Python利用leather庫的視覺化。

Leather簡介

Leather是一個易於使用且流行的Python資料視覺化庫。你可以在Python Package Index(PyPI,Python軟體包索引)所在的網站https://pypi.org/project/leather/上找到該軟體包。PyPI是第三方軟體包的儲存庫,我們可以使用pip3實用程式下載它。我們還可以在PyPI上搜索包的可用性。在筆記本中執行以下命令:

!pip3 search leather

輸出如圖(3-2)所示:

在繼續學習這個包之前,我們需要提前瞭解一些關於Python程式語言的知識。在Python中,製表符(tab)或縮排(index)用於指示程式碼塊。在一些流行的程式語言比如C、C++和java中,多行程式碼塊被封閉在括號{}中。然而Python強制程式設計師使用縮排表示程式碼塊,除此之外別無其他辦法。以下面的程式碼為例:

a = 3

if a%2 == 0:

print('Even')

else:

print('Odd')

在筆記本上執行程式碼即可看到結果了。還有一件事你也可以試試:我們先前學習過PEP 20,即Python之禪。Python創始人將其作為彩蛋新增到直譯器中,你可以執行以下語句呼叫它:

import this

若你在筆記本中執行該語句,它會在輸出中列印Python之禪的所有內容。

注意,無論我們要用Jupyter Notebook演示什麼程式,都可以做一些修改然後在IDLE中執行。我們使用Jupyter筆記本是因為它在即時反饋和互動上的優勢。現在讓我們使用import語句將leather庫新增到筆記本中。每個會話中只需匯入一次就可以在整個會話中使用了。輸入以下語句:

import leather

執行此命令,它會將庫匯入當前筆記本的會話中。使用標題(heading)區分每個topic的內容不失為一個好主意,不過用不用都取決於你自己。你會發現,我經常在本書的筆記本中使用標題來提供上下文和參考,以說明我正在演示的內容。這是個好習慣,可能你會想使用這種方法。

讓我們編寫一些簡單的程式碼來視覺化幾個點。我們可以在X-Y座標系中定義點。我們可以使用元組(tuple)列表(list)來定義點,如下所示:

data1 = [(1.5, 2), (2, 3), (4.5, 6), (7.5, 4)]

我們也可以將它們定義為一列列表(a list of lists):

data1 = [[1.5, 2], [2, 3], [4.5, 6], [7.5, 4]]

我們也可以將它們定義為元組的元組(a tuple of tuples):

data1 = ((1.5, 2), (2, 3), (4.5, 6), (7.5, 4))

我們還可以將它們定義為列表的元組( a tuple of lists):

data1 = ([1.5, 2], [2, 3], [4.5, 6], [7.5, 4])

如你所見,leather庫並不是很特別,而且可以很靈活地定義資料。

下面定義一個圖表(chart)物件:

chart = leather.Chart('Simple pairs of x-y')

接下來,建立一個點圖(dot chart):

chart.add_dots(data1)

然後使用如下程式碼將圖表視覺化:

chart.to_svg()

它將在這個筆記本上顯示輸出,如圖(3-3)所示:

我們可以使用以下語句將影象儲存到磁碟:

chart.to_svg('image1.svg')

我們可以按如下方式自定義點:

chart = leather.Chart('Customised Dots')chart.add_dots(data1, fill_color='#00ff00', radius=10)chart.to_svg()

接著讓我們定義更多的資料點:

data2 = [(2, 3), (4, 5), (5, 6), (7, 5)]

我們還可以將多個系列(這裡的系列指的是不同風格的點,即data1和data2)的點視覺化如下:

chart=leather.Chart('Visualizing Multiple series')

chart.add_dots(data1)

chart.add_dots(data2)

chart.to_svg()

輸出如圖(3-4)所示:

如上圖(3-4)所示,leather根據所屬系列自動為點分配不同的顏色。

視覺化的更多型別

我們可以透過將點連線起來以線段形式將資料視覺化,如下所示:

chart=leather.Chart('Visualizing Lines')

chart.add_line(data1)

chart.to_svg()

輸出如圖(3-5)所示:

我們可以按如下方式自定義線條視覺化:

chart=leather.Chart('Customized Line')

chart.add_line(data1,stroke_color='#0000ff', width=3)

chart.to_svg()

如圖(3-6)顯示輸出:

我們可以將多條線段視覺化如下:

chart=leather.Chart('Visualizing Multiple Lines')

chart.add_line(data1)

chart.add_line(data2)

chart.to_svg()

如圖(3-7)顯示輸出:

我們可以在單個視覺化中視覺化多個型別的圖,如下所示:

chart=leather.Chart('Visualizing Multiple Types')

chart.add_line(data1)

chart.add_dots(data2)

chart.to_svg()

如圖(3-8)顯示輸出:

我們可以用條形圖視覺化:

data = [[1, 'A'], [2, 'B'], [3, 'C'], [4, 'D']]

chart=leather.Chart('Visualizing Bars')

chart.add_bars(data)

chart.to_svg()

在我們的資料集中,其中一個維度是文字資料。視覺化如圖(3-9)所示:

我們可以自定義如下:

chart=leather.Chart('Customizing Bars')

chart.add_bars(data, fill_color='#777777')

chart.to_svg()

輸出如圖(3-10)所示:

我們可以使用水平列(柱狀圖)進行視覺化,如下所示:

data = [ ('A', 1), ('B', 2), ('C', 3), ('D', 4)]

chart = leather.Chart('Visualizing Columns')

chart.add_columns(data)

chart.to_svg()

輸出如圖(3-11)所示:

我們可以按以下方式自定義列:

chart = leather.Chart('Customizing Columns')

chart.add_columns(data, fill_color='#77ff77')

chart.to_svg()

輸出如圖(3-12)所示:

標尺Scales

leather庫可以自動程式化地建立各種型別的Scale,能自動為文字資料建立順序標尺。這個例子和我們前面看到的一樣:

chart = leather.Chart('The Ordinal Scale')

chart.add_columns(data)

chart.to_svg()

當資料為數字時,將自動建立線性標尺。我們可以按以下方式設定其邊界:

chart = leather.Chart('Linear Scale')

chart.add_x_scale(1, 8)

chart.add_y_scale(1, 7)

chart.add_line(data1)chart.to_svg()

輸出如圖(3-13)所示:

將自動為時間(時間相關的)資料建立時間標尺:

from datetime import date

data = [

(date(2020, 1, 1), 4),

(date(2020, 3, 1), 6),

(date(2020, 6, 1), 2),

(date(2020, 9, 1), 1)]

chart = leather.Chart('Temporal Scale')

chart.add_x_scale(date(2019, 9, 1), date(2020, 12, 1))

chart.add_line(data)

chart.to_svg()

輸出如圖(3-14)所示:

風格Styling

leather提供了很多種風格可供選擇。我們可以按需求設定軸上的刻度值,如下所示:

chart = leather.Chart('Ticks Demo')

chart.add_x_scale(1, 8)

chart.add_x_axis(ticks=[1, 2, 3, 4, 5, 6, 7, 8])

chart.add_y_scale(1, 7)

chart.add_y_axis(ticks=[1, 2, 3, 4, 5, 6, 7])

chart.add_line(data1)

chart.to_svg()

輸出如圖(3-15)所示:

我們還可以自定義字型和顏色,用於顯示視覺化中的值和序列。下面是一個簡單的例子:

leather.theme.title_font_family = 'Times New Roman'

leather.theme.legend_font_family = 'Times New Roman'

leather.theme.tick_font_family = 'Times New Roman'

leather.theme.default_series_colors = ['#ff0000', '#00ff00']

chart = leather.Chart('Custom Fonts')

chart.add_line(data1)

chart.add_line(data2)

chart.to_svg()

如圖(3-16)顯示了這個例子的輸出:

我們也可以根據資料點的位置給它們上色,下面的程式碼演示了這一點。首先將random庫匯入檔案中:

import random

我們將用它生成如下資料點:

data = [(random.randint(0, 250),

random.randint(0, 250)) for i in range(100)]

將建立100個數據點。這100個點的x和y軸的值在0到250裡隨機選擇。我們可以編寫一個函式colorizer,根據點的位置以RGB的形式返回顏色值:

def colorizer(location):

return 'rgb(%i, %i, %i)' % (location.x, location.y, 150)

呼叫此函式來定義點的顏色,如下所示:

chart = leather.Chart('Colorized dots')

chart.add_dots(data, fill_color=colorizer)

chart.to_svg()

輸出如圖(3-17)所示:

總結

本章介紹了在Python中使用流行的資料視覺化庫leather進行資料視覺化的演示。我們看到了不同型別的視覺化、風格和標尺。Leather是一個非常簡單的資料視覺化庫,所以只能視覺化簡單的形狀。

你的業務需求或科學視覺化可能需要更復雜、更精細的視覺化。為此,你需要熟悉科學的Python生態系統。下一章將詳細探討科學Python生態系統。我們還將學習Numpy n維陣列(也稱為ndarrays)的基礎知識。

3
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 異構資料雜亂多,網易遊戲建流式ETL有一套