1. 程式人生 > >python之matplotlib實現繪圖和視覺化

python之matplotlib實現繪圖和視覺化

繪圖是資料分析工作中最重要的任務之一,是探索過程的一部分。python為我們提供了許多視覺化工具,最常用的的是matplotlib。matplotlib是一種用於創建出版質量圖示的桌面繪圖包(主要是2D方面),它為python構建了一個MATLAB式的繪圖介面。它不僅支援各種作業系統上許多不同的GUI後端,而且還能將圖片匯出為各種常見的向量和光柵圖:PDF、SVG、JPG、PNG、BMP、GIF等。matplotlib還有許多外掛工具集,如用於3D圖形的mplot3d以及用於地圖和投影的basemap.

一、Figure

matplotlib的影象都位於Figure物件中,利用plt.figure建立新的Figure,不能通過空的Figure繪圖。必須用add_subplot建立一個或多個subplot才行。

程式碼:

import matplotlib.pyplot as plt
import numpy as np
data = np.arange(10)
plt.plot(data)
#建立一個figure
fig = plt.figure()
#建立的影象是2*2的,目前選中的是4個subplot中的第一個(編號從1開始)
ax1 = fig.add_subplot(2, 2, 1)
ax3 = fig.add_subplot(2, 2, 3)
ax2 = fig.add_subplot(2, 2, 2)
#此時,發出一個繪圖指令,matplotlib會在最後一個用過的subplot(若無,則建立一個)上進行繪製
#'k--'是一個線性選項,代表黑色虛線
plt.plot(np.random.randn(50).cumsum(), 'k--')
#柱狀圖
ax1.hist(np.random.randn(100), bins=20, color='k', alpha=0.3)
#散點圖
ax3.scatter(np.arange(30), np.arange(30) + 3 * np.random.randn(30))
#可以使用plt.close()方法關閉圖在控制檯出現
#plt.close('all')

結果顯示:

二、subplot

plt.subplots建立新的figure,並返回一個含有已建立的subplots物件的numpy陣列,這樣可以輕鬆地對axes陣列進行索引,類似於二維陣列的索引,例:axes[0,1]代表第一行第二個圖:

其中subplots函式中各選項:

程式碼:

#建立subplot物件
fig, axes = plt.subplots(2, 3)
"""
result:2*3的子圖
其中axes:
array([[<matplotlib.axes._subplots.AxesSubplot object at 0x000000000BBDBE80>,
        <matplotlib.axes._subplots.AxesSubplot object at 0x000000000BC055C0>,
        <matplotlib.axes._subplots.AxesSubplot object at 0x000000000C2A8400>],
       [<matplotlib.axes._subplots.AxesSubplot object at 0x000000000C464C88>,
        <matplotlib.axes._subplots.AxesSubplot object at 0x000000000C4D9358>,
        <matplotlib.axes._subplots.AxesSubplot object at 0x000000000D3976A0>]], dtype=object)
"""

fig, axes = plt.subplots(2, 2, sharex=True, sharey=True)
for i in range(2):
    for j in range(2):
        axes[i, j].hist(np.random.randn(500), bins=50, color='k', alpha=0.5)
#將間距縮到0,從圖中可以看出軸標籤重疊,對於這種情況,只能自己設定刻度位置和標籤了
plt.subplots_adjust(wspace=0, hspace=0)

結果:


三、顏色、標籤和線型

matplotlib的plot函式接受一組X和Y座標,還可以接受一個表示顏色和線型的字串縮寫。

若要根據x和y繪製綠色虛線,可執行以下程式碼:

ax.plot(x,y,'g--')
#或更明確的方式
ax.plot(x,y,linestyle='--',color='g')
線型圖還可以加上一些標記(marker),以強調實際的資料點。

程式碼:

plt.figure()
plt.plot(np.random.randn(30).cumsum(), 'ko--')
#上式可以改成更為明確的形式:
plt.plot(np.random.randn(30).cumsum(), color='k', linestyle='dashed', marker='o')

結果:

線上型圖中,非實際資料點預設是按線性方式插值,可以通過drawstyle選項修改:

plt.figure()
data = np.random.randn(30).cumsum()
plt.plot(data, 'k--', label='Default')
plt.plot(data, 'k-', drawstyle='steps-post', label='steps-post')
plt.legend(loc='best')

四、刻度、標籤、圖例

pyplot介面的設計目的就是互動式使用,含有xlim、xticks和xticklabels之類的方法。它們分別控制圖表的範圍、刻度位置、刻度標籤。其使用方式有以下兩種:

  • 呼叫時不帶引數,則返回當前的引數值。例如,plt.xlim()返回當前X軸繪圖範圍。
  • 呼叫時帶引數,則設定引數值。因此,plt.xlim([0,10])會將X軸的範圍設定為0到10。

這些方法都是對當前或最近建立的AxesSubplot起作用的。

對於subplot物件,以xlim為例,就是ax.get_xlim和ax.set_xlim。

#設定標題、軸標籤、刻度、刻度標籤
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.plot(np.random.randn(1000).cumsum())
#設定刻度
ticks = ax.set_xticks([0, 250, 500, 750, 1000])
#設定刻度標籤
labels = ax.set_xticklabels(['one', 'two', 'three', 'four', 'five'],
                            rotation=30, fontsize='small')
#設定標題
ax.set_title('My first matplotlib plot')
#設定軸標題
ax.set_xlabel('Stages')

結果:

新增圖例

圖例(legend)是另一種用於標識圖表元素的重要工具。

方法有兩種,最簡單的一種是在新增subplot時傳入label引數。

from numpy.random import randn
fig = plt.figure(); ax = fig.add_subplot(1, 1, 1)
ax.plot(randn(1000).cumsum(), 'k', label='one')
ax.plot(randn(1000).cumsum(), 'k--', label='two')
ax.plot(randn(1000).cumsum(), 'k.', label='three')
#顯示圖例,loc表示圖例位置,best為最佳位置。
#ax.legend()或plt.legend()方法
ax.legend(loc='best')

左圖是無圖例的,右圖是有圖例的。

註解以及在subplot上繪圖

除標準的圖表物件之外,你可能還希望繪製一些自定義的註釋(比如文字、箭頭或其他圖形等)。

註解還可以通過text、arrow和annotate等函式進行新增,text可以將文字繪製在圖表的指定座標(x,y),還可以加上一些自定義格式:

from datetime import datetime
import pandas as pd

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)

data = pd.read_csv('spx.csv', index_col=0, parse_dates=True)
spx = data['SPX']

spx.plot(ax=ax, style='k-')

crisis_data = [
    (datetime(2007, 10, 11), 'Peak of bull market'),
    (datetime(2008, 3, 12), 'Bear Stearns Fails'),
    (datetime(2008, 9, 15), 'Lehman Bankruptcy')
]
#添加註釋(包括文字和箭頭)
for date, label in crisis_data:
    ax.annotate(label, xy=(date, spx.asof(date) + 75),
                xytext=(date, spx.asof(date) + 225),
                arrowprops=dict(facecolor='black', headwidth=4, width=2,
                                headlength=4),
                horizontalalignment='left', verticalalignment='top')

# 設定x、y軸範圍:Zoom in on 2007-2010
ax.set_xlim(['1/1/2007', '1/1/2011'])
ax.set_ylim([600, 1800])
#新增標題
ax.set_title('Important dates in the 2008-2009 financial crisis')

結果:

五、將圖表儲存到檔案

利用plt.savefig可以將當前圖表儲存到檔案。該方法相當於Figure物件的例項方法savefig。

相關推薦

pythonmatplotlib實現繪圖視覺

繪圖是資料分析工作中最重要的任務之一,是探索過程的一部分。python為我們提供了許多視覺化工具,最常用的的是matplotlib。matplotlib是一種用於創建出版質量圖示的桌面繪圖包(主要是2D方面),它為python構建了一個MATLAB式的繪圖介面。它不僅支援各種

利用Python進行資料分析——繪圖視覺(八)(2)

1、註釋以及在Subplot上繪圖 除標準的圖表物件之外,你可能還希望繪製一些自定義的註釋(比如文字、箭頭或其他圖形等)。 註釋可以通過text、arrow和annotate等函式進行新增。text可以將文字繪製在圖表的指定座標(x, y),還可以加上一些自定義格式: In [41]: ax.t

轉載]利用Python進行資料分析——繪圖視覺 xticks-學習筆記

matplotlib是一個用於創建出版質量圖表的桌面繪圖包(主要是2D方面)。該專案是由John Hunter於2002年啟動的,其目的是為Python構建一個MATLAB式的繪圖介面。如果結合使用一種GUI工具包(如IPython),matplotlib還具有諸如縮放和平移等互動功能。它不僅支援各種作業系

利用python進行資料分析-繪圖視覺1

matplotlib AIP入門 1.Figure和Subplot matplotlib的影象都位於Figure物件中。你可以用plt.figure建立一個新的Figure: fig=plt.figu

python資料分析07--matplotlib繪圖視覺

python資料分析07–matplotlib繪圖和視覺化 一、簡介 ​ 資訊視覺化(也叫繪圖)是資料分析中最重要的工作之一。它可能是探索過程的一部分,例 如,幫助我們找出異常值、必要的資料轉換、得出有關模型的idea等。另外,做一個可互動的 資料視覺化也許是工作的最終目標。 ​ m

利用python進行資料分析繪圖視覺

matplotlib API入門  使用matplotlib的辦法最常用的方式是pylab的ipython,pylab模式還會向ipython引入一大堆模組和函式提供一種更接近與matlab的介面,matplotlib API函式位於matplotlib.pyplot模組中,其通常的引入約定是:import

【利用python進行資料分析】繪圖視覺

通常的引入約定是: import matplotlib.pyplot as plt fig,axes=plt.subplots(2,3) 這種用法,可以一下子產生2x3個子視窗,並且以numpy陣列的方式儲存在axes中,而fig仍然是整個影象物件,這樣我們可以通過對a

Matplotlib模組:繪圖視覺

    一、簡單介紹Matplotlib 1、Matplotlib是一個強大的Python繪圖和資料視覺化的工具包 2、安

《利用Python進行資料分析·第2版》第9章 繪圖視覺

資訊視覺化(也叫繪圖)是資料分析中最重要的工作之一。它可能是探索過程的一部分,例如,幫助我們找出異常值、必要的資料轉換、得出有關模型的 idea 等。另外,做一個可互動的資料視覺化也許是工作的最終目標。Python 有許多庫進行靜態或動態的資料視覺化,但我這裡重要關注於 ma

pandas 繪圖視覺

1. matplotlib api 入門 matplotlib api 函式都位於maptplotlib.pyplot模組中 畫圖的各種方法: Figure:畫圖視窗 Subplot/add_Subplot: 建立一個或多個子圖 Subplots_adjust:調整

利用python呼叫hanlp實現依存句法視覺

環境:Windows、python3.6 2、安裝python的pyhanlp包:pip install pyhanlp 3、Windows使用者如果遇到: building '_jpype' extension error: Microsoft Visual C

第九篇 繪圖視覺

資訊視覺化(也叫繪圖)是資料分析中最重要的⼯作之⼀。它可能是探索過程的⼀部分,例如,幫助我們找出異常值、必要的資料轉換、得出有關模型的idea等。另外,做⼀個可互動的資料視覺化也許是⼯作的最終⽬標。Python有許多庫進⾏靜態或動態的資料視覺化,但這⾥主要關注於matplotlib(http://matplo

Python+pandas+matplotlib資料分析與視覺案例(附原始碼)

問題描述:執行下面的程式,在當前資料夾中生成飯店營業額模擬資料檔案data.csv然後完成下面的

第八章:繪圖視覺

說明:本文章為Python資料處理學習日誌,記錄內容為實現書本內容時遇到的錯誤以及一些與書本不一致的地方,一些簡單操作則不再贅述。日誌主要內容來自書本《利用Python進行資料分析》,Wes McKinney著,機械工業出版社。 這篇博文主要是為了補全pyth

Python資料視覺Matplotlib實現各種圖表

資料分析就是將資料以各種圖表的形式展現給領導,供領導做決策用,因此熟練掌握餅圖、柱狀圖、線圖等圖表製作是一個數據分析師必備的技能。Python有兩個比較出色的圖表製作框架,分別是Matplotlib和Pyechart。本文主要講述使用Matplotlib製作各種資料圖表。 Matplotlib是最流行的用於

Python數據可視Matplotlib實現各種圖表

enumerate 類別 三個參數 統計量 har bigdata 垂直 數據分析師 col 數據分析就是將數據以各種圖表的形式展現給領導,供領導做決策用,因此熟練掌握餅圖、柱狀圖、線圖等圖表制作是一個數據分析師必備的技能。Python有兩個比較出色的圖表制作框架,分別是M

python繪圖視覺--matplotlib

主要用來記錄《利用python進行資料分析》一書第8章 繪圖與視覺化  matplotlib繪圖 1. 載入模組: %matplotlib inline import numpy as np import matplotlib.pyplot as plt 在jupy

python 使用matplotlib 實現從檔案中讀取x,y座標的視覺

1. test.txt檔案,資料以逗號分割,第一個資料為x座標,第二個為y座標,資料如下:1.1,2 2.1,2 3.1,3 4.1,5 40,38 42,41 43,422. python部分程式碼#

使用Pythonparamiko模塊threading實現多線程登錄多臺Linux服務器

python ssh paramikothreading 遠程 有時候我們需要在多臺Linux服務器上面執行同樣的命令,或者同樣的操作,如果我們每一臺單獨登錄上去做這樣太麻煩了,所以我們可以考慮使用自動化腳本來實現。我這裏使用Python多線程的方式,這樣速度更快,如果使用Sh

數字影象處理空間域濾波(Octave實現

濾波這一概念可以結合數字訊號處理這一領域中的濾波。而在數字影象處理中濾波可以分為空間域濾波和頻率域濾波。這篇博文主要來學習下空間域濾波。 空間域濾波機理 *空間濾波器由一個鄰域(典型的是一個較小的矩形)構成,對該鄰域所包圍的畫素按照一定的操作計算出目標畫素的值,這一過程就是空