python數據分析(2)--matplotlib

前情回顧

python數據分析(1)--numpy

簡介

Matplotlib是一個Python的繪圖庫,可以繪制出常用圖表,如散點圖、柱狀圖等,下面做簡要介紹。

一個簡單的demo

首先從一個demo看起,繪制三角函數并填充一定區(qū)域,每一步有注釋說明,整體用法與MATLAB接近。

# encoding=utf-8

import numpy
import matplotlib.pyplot as plot

def main():
    # 生成數組作為橫坐標
    x = numpy.linspace(-numpy.pi, numpy.pi, 256, endpoint=True)
    cos = numpy.cos(x)
    sin = numpy.sin(x)
    plot.figure(1)

    # 繪制cos函數
    plot.plot(x, cos, color="blue", linewidth=1.0, linestyle='-', label='cos')
    # 繪制sin函數
    plot.plot(x, sin, 'r*', label='sin')
    # 設置標題
    plot.title('function')
    
    #------繪制坐標------
    ax = plot.gca()
    # 設置坐標四周的樣式
    ax.spines['right'].set_color('none')
    ax.spines['top'].set_color('none')
    ax.spines['left'].set_position(('data', 0))
    ax.spines['bottom'].set_position(('data', 0))
    # 設置坐標值顯示的位置
    ax.xaxis.set_ticks_position('bottom')
    ax.yaxis.set_ticks_position('left')

    # 設置坐標顯示內容
    plot.xticks([-numpy.pi, -numpy.pi/2, 0, numpy.pi/2, numpy.pi],
                [r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])
    plot.yticks(numpy.linspace(-1, 1, 5, endpoint=True))

    # 設置每個坐標的樣式
    for label in ax.get_xticklabels() + ax.get_yticklabels():
        label.set_fontsize(8)
        label.set_bbox(dict(facecolor='white', edgecolor='None', alpha=0.5))

    # 設置圖例所在位置    
    plot.legend(loc='upper left')

    # 設置網格
    plot.grid()

    # 繪制填充區(qū)域
    plot.fill_between(x, numpy.abs(x) < 0.5, cos, cos > 0.5, color='blue', alpha=0.2)
    t = 1

    # 繪制直線
    plot.plot([t, t], [0, numpy.cos(t)], 'y', linewidth=3, linestyle='--')
    
    # 繪制注解
    plot.annotate('cos(1)', xy=(t, numpy.cos(1)), xycoords='data', xytext=(10, 30), textcoords='offset points',arrowprops=dict(arrowstyle='->',connectionstyle='arc3,rad=0.2'))
    
    plot.show()

if __name__ == '__main__':
    main()

主要解釋一下fill_between()這個方法,這個方法完整定義為

fill_between(x, y1, y2=0, where=None, interpolate=False, hold=None, **kwargs)
  • x-橫坐標
  • y1-橫坐標為x時填充縱坐標的起點
  • y2-橫坐標為x時填充縱坐標的終點
  • where-縱坐標生效的填充范圍

畫出的圖如下

1.png

類型

matplotlib支持的繪圖類型主要有以下幾種

類型 說明
scatter 散點圖
bar 柱狀圖
pie 餅狀圖
polar 極坐標
imshow 熱力圖

下面是每種圖的示例。

散點圖

2.png
def scatter():
    x = numpy.random.normal(0, 1, 100)
    y = numpy.random.normal(0, 1, 100)
    plot.scatter(x, y)
    plot.show()

柱狀圖

3.png
def bar():
    x = numpy.random.normal(0, 1, 100)
    y = numpy.random.normal(0, 1, 100)
    plot.bar(x, y, 0.2, edgecolor='white')
    plot.show()

餅圖

4.png
def pie():
    x = numpy.random.normal(0, 1, 5)
    y = numpy.random.normal(0, 1, 5)
    plot.pie(x)
    plot.show()

極坐標

5.png
def polar():
    theta = numpy.arange(0, 2 * numpy.pi, 2 * numpy.pi / 20)
    r = 10 * numpy.random.rand(20)
    plot.polar(theta, r)
    plot.show()

熱力圖

def heatmap():
    data = numpy.random.rand(3, 3)
    cmap = cm.Blues
    plot.imshow(data, interpolation='nearest', cmap=cmap, aspect='auto')
    plot.show()

小結

matplotlib的繪圖功能十分強大和靈活,上面僅僅是很小的一部分,利用這個庫在數據分析說結果之后就可以直接繪制出想要的圖,不需要再用其它工具繪制,十分方便。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容