友快網

導航選單

10 個案例分享幾個 Python 視覺化小技巧,助你繪製高質量圖表

作者 | 俊欣

一般在

Python

當中,我們用於繪製圖表的模組最基礎的可能就是

matplotlib

了,今天小編分享幾個用該模組進行視覺化製作的技巧,幫助你繪製出更加

高質量

的圖表。

同時本篇文章的第二部分是用

Python

來製作視覺化動圖,讓你更加清楚的瞭解到資料的走勢

資料集的匯入

最開始,我們先匯入資料集,並且匯入我們需要用到的庫

import pandas as pd

import matplotlib。pyplot as plt

plt。style。use(“seaborn-darkgrid”)

# 讀取資料

aapl = pd。read_csv(“AAPL。csv”)

print(aapl。head())

output

Date        Open        High  。。。       Close   Adj Close    Volume

0  2021-9-30  143。660004  144。380005  。。。  141。500000  141。293793  88934200

1  2021-10-1  141。899994  142。919998  。。。  142。649994  142。442108  94639600

2  2021-10-4  141。759995  142。210007  。。。  139。139999  138。937225  98322000

3  2021-10-5  139。490005  142。240005  。。。  141。110001  140。904358  80861100

4  2021-10-6  139。470001  142。149994  。。。  142。000000  141。793060  83221100

簡單的折線圖

上面的程式碼我們用到的是“蘋果”公司2021年的9月31日到12月31日的

股價走勢

,我們先來簡單的畫一張折線圖,程式碼如下

plt。figure(figsize=(12,6))plt。plot(aapl[

“Close”

])

output

上面的折線圖看著就有點

單調和簡單

,我們就單單隻可以看到資料的走勢,除此之外就沒有別的收穫,我們甚至都不知道這條折線所表示的意義,因為接下來我們來進行一系列的最佳化

新增標題以及設定Y軸標籤

第一步我們先給圖表新增標題以及給X軸、Y軸

設定標籤

,程式碼如下

plt。figure(figsize=(12,6))plt。plot(aapl[“Close”])

# 新增標題和給Y軸打上標記

plt。ylabel(“Closing Price”, fontsize=15)  ## 收盤價plt。title(“Apple Stock Price”, fontsize=18) ## 標題:蘋果公司股價

output

再新增一個Y軸

現有的這個Y軸代表的是收盤價,要是我們還想再往圖表當中新增另外一列的資料,該資料的數值範圍和已有的收盤價的

數值範圍不同

,如果放在一起,繪製出來的圖表可不好看,如下

plt。figure(figsize=(12,6))plt。plot(aapl[“Close”])

# 第二根折線圖

plt。plot(aapl[“Volume”])

# Y軸的名稱和標記

plt。ylabel(“Closing Price”, fontsize=15)plt。title(“Apple Stock Price”, fontsize=18)

output

可以看到我們代表股價的那條藍線變成了水平的直線,由於它的數值範圍和“Volume”這一列當中的資料,

數值範圍差了不少

,因此我還需要一個Y軸,來代表“Volume”這一列資料的走勢,程式碼如下

fig, ax1 = plt。subplots(figsize=(12,6))

# 第二個Y軸的標記

ax2 = ax1。twinx()

ax1。plot(aapl[“Close”])ax2。plot(aapl[“Volume”], color=“r”)

# 新增標題和Y軸的名稱,有兩個Y軸

ax1。set_ylabel(“Closing Price”, fontsize=15)ax2。set_ylabel(“Volume”, fontsize=15)plt。title(“Apple Stock Price”, fontsize=18)

output

上面的程式碼我們透過twinx()方法再來新建一個Y軸物件,然後對應的資料是Volume這一列當中的資料,而給Y軸標記的方式也從上面的plt。ylabel()變成了ax。set_ylabel()

新增圖例

接下來給繪製好的圖表新增圖例,不同的折線代表的是不同的資料,程式碼如下

fig, ax1 = plt。subplots(figsize=(12,6))

# 第二個Y軸

ax2 = ax1。twinx()

ax1。plot(aapl[“Close”])ax2。plot(aapl[“Volume”], color=“r”)

# 設定Y軸標籤和標題

ax1。set_ylabel(“Closing Price”, fontsize=15)ax2。set_ylabel(“Volume”, fontsize=15)plt。title(“Apple Stock Price”, fontsize=18)

# 新增圖例

ax1。legend([“Closing price”], loc=2, fontsize=12)ax2。legend([“Volume”], loc=2, bbox_to_anchor=(0, 0。9), fontsize=12)

output

在plt。legend()方法當中的loc引數代表的是圖例的位置,2代表的是左上方,具體的大家可以透過下面的連結來查閱

https://matplotlib。org/stable/api/_as_gen/matplotlib。pyplot。legend。html

將網格線去除掉

有時候我們感覺圖表當中的網格線有點礙眼,就可以將其去掉,程式碼如下

fig, ax1 = plt。subplots(figsize=(12,6))

# 第二個Y軸

ax2 = ax1。twinx()

ax1。plot(aapl[“Close”])ax2。plot(aapl[“Volume”], color=“r”)

# 設定Y軸標籤和標題

ax1。set_ylabel(“Closing Price”, fontsize=15)ax2。set_ylabel(“Volume”, fontsize=15)plt。title(“Apple Stock Price”, fontsize=18)

# 新增圖例

ax1。legend([“Closing price”], loc=2, fontsize=12)ax2。legend([“Volume”], loc=2, bbox_to_anchor=(0, 0。9), fontsize=12)

# 去掉網格線

ax1。grid(False)

ax2。grid(False)

output

這樣出來的圖表是不是看著順眼多了呢?!

在圖表當中新增一些文字

有時候我們也想在圖表當中

新增一些文字

,可以是註釋也可以是一些讚美性的語言,可以透過程式碼來實現,如下

fig, ax1 = plt。subplots(figsize=(12,6))

# 第二個Y軸

ax2 = ax1。twinx()

ax1。plot(aapl[“Close”])ax2。plot(aapl[“Volume”], color=“r”)

# 設定Y軸標籤和標題

ax1。set_ylabel(“Closing Price”, fontsize=15)ax2。set_ylabel(“Volume”, fontsize=15)plt。title(“Apple Stock Price”, fontsize=18)

# 新增圖例

ax1。legend([“Closing price”], loc=2, fontsize=12)ax2。legend([“Volume”], loc=2, bbox_to_anchor=(0, 0。9), fontsize=12)

# 去掉網格線

ax1。grid(False)

ax2。grid(False)

date_string = datetime。strptime(“2021-10-31”, “%Y-%m-%d”)

# 新增文字

ax1。text(

date_string, ## 代表的是新增的文字的位置

170,

“Nice plot!”, ## 新增的文字的內容

fontsize=18, ## 文字的大小    color=“green”## 顏色)

output

圖表當中的中文顯示

在上面的圖表當中,無論是標題還是註釋或者是圖例,都是英文的,我們需要往裡面新增中文的內容時候,還需要新增下面的程式碼

plt。rcParams[‘font。sans-serif’] = [‘SimHei’]

fig, ax1 = plt。subplots(figsize=(12,6))

# 第二個Y軸

ax2 = ax1。twinx()

ax1。plot(aapl[“Close”])ax2。plot(aapl[“Volume”], color=“r”)

# 設定Y軸標籤和標題

ax1。set_ylabel(“收盤價”, fontsize=15)ax2。set_ylabel(“成交量”, fontsize=15)plt。title(“蘋果公司股價走勢”, fontsize=18)

# 新增圖例

ax1。legend([“Closing price”], loc=2, fontsize=12)ax2。legend([“Volume”], loc=2, bbox_to_anchor=(0, 0。9), fontsize=12)

# 去掉網格線

ax1。grid(False)

ax2。grid(False)

# 新增文字

ax1。text(

date_string,

170,

“畫的漂亮”,

fontsize=18,

color=“green”)

output

這樣全域性的字型都被設定成了“黑體”,文字內容都是用中文來顯示

X軸/Y軸上刻度字型的大小

我們還可以給X軸/Y軸新增邊框,以及邊框的粗細也可以透過程式碼來進行調整,如下

plt。rcParams[

“axes。edgecolor”

] =

“black”

plt。rcParams[

“axes。linewidth”

] = 2

同時我們還可以對X軸以及Y軸上面的刻度,它們的字型大小進行設定,程式碼如下

# tick size

ax1。tick_params(axis=‘both’, which=‘major’, labelsize=13)ax2。tick_params(axis=‘both’, which=‘major’, labelsize=13)

output

出來的圖表是不是比一開始的要好很多呢?

製作動圖

接下來給大家介紹一個製作動圖的

Python

庫,

bar_chart_race

,只需要簡單的幾行程式碼,就可以製作出隨著時間變化的直方圖動圖,程式碼如下

import bar_chart_race as bcr

import pandas as pd

# 生成GIF影象

df = pd。read_csv(‘covid19_tutorial。csv’, index_col=index_col,

parse_dates=parse_dates)

bcr。bar_chart_race(df, ‘covid19_tutorial_horiz。gif’)

output

大家若是感興趣,可以登上它的官網

https://www。dexplo。org/bar_chart_race/

來了解更多如何使用該模組來製作

Python

視覺化動圖的案例

瓜分6666元現金紅包!領取8%+理財券,每日限額3000份!

上一篇:一線隊四球勝預備隊,這場熱身賽是在提前為亞冠選人嗎
下一篇:王景光導演因疾病去世,享年54歲,妻子悲痛發訃告,最後露面照曝光