Matplotlib數據可視化:折線圖與散點圖

2021-03-02 機器學習算法與Python實戰
from matplotlib import pyplot as plt
import numpy as np
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']  # 中文字體支持

對於折線圖的繪製,在之前文章的示例中都有使用,在面向對象繪圖方法中,一般是創建axes實例後調用plot()方法實現折線圖繪製,並通過傳遞各種參數實現對圖像的設置。散點圖的繪製通過axes實例的scatter()方法來實現。scatter()方法的參數和參數取值與繪製折線圖的plot()方法基本一致,所以本文將兩種圖放在一起進行介紹。

1 多圖像繪製

在一個axes中,可以繪製多條折線圖,秩序多次調用plot()或者scatter()方法即可。

x1 = np.linspace(0.0, 5.0, 10)
y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)
fig, axes = plt.subplots(1, 2, figsize=(10, 3), tight_layout=True)

# 折線圖
axes[0].set_title('圖1 折 線 圖')
axes[0].plot(x1, y1)
axes[0].plot(x1, y1+0.5)

# 散點圖
axes[1].set_title('圖2 散 點 圖')
axes[1].scatter(x1, y1)
axes[1].scatter(x1, y1+0.5)
plt.show()

2 顏色

顏色通過color參數來設置,color參數的值可以使顏色的英文全稱,例如'green'、'red',也可以是簡寫,例如'g'表示'green'、'r表示'red',一些常見顏色全稱和簡寫如下所示。

如果覺得這些常見的顏色不夠用,設置可以用16進位字符來表示顏色。

x1 = np.linspace(0.0, 5.0, 10)
y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)
fig, axes = plt.subplots(1, 2, figsize=(10, 3), tight_layout=True)

# 折線圖
axes[0].set_title('圖1 折 線 圖')
axes[0].plot(x1, y1, color='red')  # 紅色
axes[0].plot(x1, y1+0.5, color='g')  # 綠色
axes[0].plot(x1, y1+1, color='#008000')  # 也是綠色

# 散點圖
axes[1].set_title('圖2 散 點 圖')
axes[1].scatter(x1, y1, color='red')  # 紅色
axes[1].scatter(x1, y1+0.5, color='g')  # 綠色
axes[1].scatter(x1, y1+1, color='#008000')  # 也是綠色
plt.show()

3 圖例

axes實例中提供了legend()方法用於添加圖例,legend()方法會將元素的label字符串設置為圖例,如下面的示例所示,有兩種參數傳遞方式來設置label。除了label外,還可以傳遞loc參數來設置圖例的位置,loc參數值可以使代表位置的字符串,也可以是對應的整數,其對應關係如下所示:

    ===============   =============
Location String Location Code
=============== =============
'best' 0
'upper right' 1
'upper left' 2
'lower left' 3
'lower right' 4
'right' 5
'center left' 6
'center right' 7
'lower center' 8
'upper center' 9
'center' 10
=============== =============

x1 = np.linspace(0.0, 5.0, 10)
y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)
fig, axes = plt.subplots(3, 2, figsize=(10, 8), tight_layout=True)

axes[0, 0].plot(x1, y1, label='線1')  # 傳遞label參數
axes[0, 0].plot(x1, y1+0.5, label='線2')  # 傳遞label參數
axes[0, 0].legend(loc='best')  # 默認就是best

axes[1, 0].plot(x1, y1, label='線1')  # 傳遞label參數
axes[1, 0].plot(x1, y1+0.5, label='線2')  # 傳遞label參數
axes[1, 0].legend(loc='lower right')

line1, = axes[2, 0].plot(x1, y1)  # 注意,等號前面有逗號
line2, = axes[2, 0].plot(x1, y1+0.5)
axes[2, 0].legend(handles=(line1, line2), labels=('線1', '線2'), loc='upper center')


axes[0, 1].scatter(x1, y1, label='第一組')  # 傳遞label參數
axes[0, 1].scatter(x1, y1+0.5, label='第二組')  # 傳遞label參數
axes[0, 1].legend(loc='best')  # 默認就是best

axes[1, 1].scatter(x1, y1, label='第一組')  # 傳遞label參數
axes[1, 1].scatter(x1, y1+0.5, label='第二組')  # 傳遞label參數
axes[1, 1].legend(loc='lower right')


group1 = axes[2, 1].scatter(x1, y1)   # 注意,等號前面沒有逗號,這是與plot()方法不同的
group2 = axes[2, 1].scatter(x1, y1+0.5) 

axes[2, 1].legend(handles=(group1, group2), labels=('第一組', '第二組'), loc='upper center')

plt.show()

4 線型

通過傳遞linestyle或ls參數可以設置線型,參數包含一下幾種取值:

    =============    ===============================
character description
============= ===============================
``'-'`` 實線(默認)
``'--'`` 長虛線
``'-.'`` 點劃線
``':'`` 虛線
============= ===============================

x1 = np.linspace(0.0, 5.0, 10)
y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)
fig = plt.figure()
axes = fig.add_subplot(1, 1, 1)
axes.plot(x1, y1, color='black', label='-', ls='-')  # 默認線性就是'-'
axes.plot(x1, y1+0.5, color='green', label='--',ls='--')
axes.plot(x1, y1+1, color='blue',  label='-.', linestyle='-.')
axes.plot(x1, y1+1.5, color='red', label=':', ls=':')
axes.legend()
plt.show()

5 標記(形狀)

參數marker可以在圖形中添加標記,標記參數值和對應的標記類型如下所示:

    =============    ===============================
character description
============= ===============================
``'.'`` 點
``','`` 像素點
``'o'`` 圓
``'v'`` 向下三角形
``'^'`` 向上三角形
``'<'`` 向左三角形
``'>'`` 向右三角形
``'1'`` 向下T形
``'2'`` 向上T形
``'3'`` 向左T形
``'4'`` 向右T形
``'s'`` 正方形
``'p'`` 五邊形
``'*'`` 星型
``'h'`` 六邊形1
``'H'`` 六邊形2
``'+'`` 十字形
``'x'`` x 形
``'D'`` 大菱形
``'d'`` 小菱形
``'|'`` 豎線
``'_'`` 橫線
============= ===============================

x1 = np.linspace(0.0, 5.0, 10)
y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)
fig, axes = plt.subplots(1, 2, figsize=(10, 3), tight_layout=True)

axes[0].plot(x1, y1, color='black', label='.', marker='.') 
axes[0].plot(x1, y1+0.5, color='green', label=',', marker=',')
axes[0].plot(x1, y1+1, color='blue',  label='o', marker='|')
axes[0].plot(x1, y1+1.5, color='red', label='v', marker='_')
axes[0].legend()

axes[1].scatter(x1, y1, color='black', label='.', marker='.') 
axes[1].scatter(x1, y1+0.5, color='green', label=',', marker=',')
axes[1].scatter(x1, y1+1, color='blue',  label='o', marker='|')
axes[1].scatter(x1, y1+1.5, color='red', label='v', marker='_')
axes[1].legend()
plt.show()

繪製折線圖時,在傳遞了marker參數後,也可以通過以下參數進一步設置標記的樣式:

markeredgecolor 或 mec : 邊框顏色markeredgewidth 或 mew :邊框粗細markerfacecolor 或 mfc :填充色
x1 = np.linspace(0.0, 5.0, 10)
y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)
fig = plt.figure()
axes = fig.add_subplot(1, 1, 1)
axes.plot(x1, y1, color='blue', label='線1', marker='*',markersize=15, markerfacecolor='green',markeredgecolor='red', markeredgewidth=3) # 線1
axes.plot(x1, y1+0.5, color='blue', label='線2', marker='*',markersize=15, markerfacecolor='green',markeredgecolor='red')   # 線2
axes.plot(x1, y1+1, color='blue', label='線3', marker='*',markersize=5, markerfacecolor='red')   # 線3
axes.plot(x1, y1+1.5, color='blue', label='線4',marker='*',markersize=10, markerfacecolor='red')   # 線4
axes.legend()
plt.show()

散點圖修改點的樣式時,參數與折線圖有些許不同:

x1 = np.linspace(0.0, 5.0, 10)
y1 = np.cos(2 * np.pi * x1) * np.exp(-x1)
fig = plt.figure()
axes = fig.add_subplot(1, 1, 1)
axes.scatter(x1, y1, color='green', label='第一組', marker='*',s=105,edgecolors='red', linewidths=5)
axes.scatter(x1, y1+0.5, color='green', label='第二組', marker='*',s=15)
axes.scatter(x1, y1+1, color='blue', label='第三組', marker='*',s=5)
axes.scatter(x1, y1+1.5, color='blue', label='第四組',marker='*',s=10)
axes.legend()
plt.show()

6 顯示坐標

顯示坐標可以用添加text的方法實現:

x1 = [i*0.1 for i in range(0, 50, 5)]
y1 = [i*i for i in x1]
fig, axes = plt.subplots(1, 2, figsize=(10, 3), tight_layout=True)

axes[0].plot(x1, y1, color='red', label='.', marker='.')  # 默認線性就是'-'
axes[1].scatter(x1, y1, color='blue', label='.', marker='*')  # 默認線性就是'-'
for a, b in zip(x1, y1):  
    axes[0].text(a, b, (a,b),ha='left', va='top', fontsize=10) 
    axes[1].text(a, b, (a,b),ha='left', va='top', fontsize=10)
plt.show()

相關焦點

  • Matplotlib數據可視化!
    數據可視化,就是指將結構或非結構數據轉換成適當的可視化圖表,然後將隱藏在數據中的信息直接展現於人們面前。相比傳統的用表格或文檔展現數據的方式,可視化能將數據以更加直觀的方式展現出來,使數據更加客觀、更具說服力。數據可視化已經被用於工作科研的方方面面,如工作報表、科研論文等,成為了不可或缺的基礎技能。現在,就讓我們一起來學習下數據可視化的基礎知識。
  • matplotlib庫繪製折線圖、子圖及條形圖
    前面幾節我們學習了python中numpy和pandas庫的一些常用操作,接下來幾個章節,我們學習一個非常重要的數據可視化庫matplotlib(seaborn庫也有有所涉及)。這裡我們需要知道,matplotlib庫主要繪製一些2D圖形和簡單的3D圖形。
  • 數據可視化|matplotlib 的主要組成元素
    >matplotlib 是 Python 中的一個繪圖庫,具有可定製性強、圖表資源豐富等特點,既能創建靜態圖形,也能創建動態交互的數據可視化效果;既能創建 2D 圖形,也能創建 3D 圖形;既能創建常見的簡單圖形,也能創建統計學專業的複雜圖形。ma
  • matplotlib的Python數據可視化和探索——入門指南
    Matplotlib提供了一種簡單而全面的可視化方法來介紹我們的發現。我們將在本教程中很快看到,有很多可視化可供選擇,以展示我們的結果。從直方圖到散點圖,matplotlib設置了一系列顏色,主題,調色板和其他選項以自定義和個性化我們的圖。
  • Python 數據分析:Matplotlib 繪圖
    簡介Matplotlib 是 Python 提供的一個繪圖庫,通過該庫我們可以很容易的繪製出折線圖、直方圖、散點圖、餅圖等豐富的統計圖,安裝使用 pip install matplotlib 命令即可,Matplotlib 經常會與 NumPy 一起使用。
  • Matplotlib數據可視化方法總結
    數據可視化,就是指將結構或非結構數據轉換成適當的可視化圖表,然後將隱藏在數據中的信息直接展現於人們面前。相比傳統的用表格或文檔展現數據的方式,可視化能將數據以更加直觀的方式展現出來,使數據更加客觀、更具說服力。數據可視化已經被用於工作科研的方方面面,如工作報表、科研論文等,成為了不可或缺的基礎技能。現在,就讓我們一起來學習下數據可視化的基礎知識。
  • Matplotlib 數據可視化基本操作
    最近著手to C業務,藉助Python進行數據分析,涉及到數據可視化的一些內容,跟著網上的教程敲了敲代碼本文內容:csv文件數據讀取與信息查閱;柱形圖、折線圖、餅圖、箱型圖、散點圖、直方圖繪製data讀取與顯示 #  import packagesimport pandas as pd import
  • Python可視化:學會Matplotlib這幾點就夠了!
    python分析可視化展示,對於日常的分析中主要用到餅圖、折線圖、直方圖基本能滿足一般的分析可視化呈現。1、可視化直方圖舉例import matplotlib.pyplot as pltplt.rcParams['font.family']='Arial Unicode MS' #中文顯示plt.plot([3,1,4,5,2]) #基礎數據實現折線圖plt.ylabel('縱軸(值)')
  • Python-matplotlib: 散點圖的繪製
    ,所使用的數據關於全球教育水平劃分的師生比例,涉及到的包主要為matplotlib和seaborn,當然用於數據處理分析的pandas和 numpy也必不可少。本文涉及的數據主要包括兩種,一種為全球各大洲的網格數據,用於繪製另類散點圖例,一種為全球各州的教育水平的師生比例,用於散點圖的繪圖。各大洲的網格數據如下(部分):如紅框所示,為所需要的數據,用於繪圖。
  • 看了這個總結,其實 Matplotlib 可視化,也沒那麼難!
    作者 | 舊時晚風拂曉城 來源 | 傑哥的IT之旅(ID:Jake_Internet)頭圖 | CSDN 下載自東方IC公眾號「傑哥的IT之旅」後臺回覆:「matplotlib數據可視化」,獲取本文完整數據集。Python 中可以通過 matplotlib 模塊的 pyplot 子庫來完成繪圖。
  • 【數據分析】Matplotlib
    Matplotlib是一個強大的Python繪圖和數據可視化的工具包。數據可視化也是我們數據分析的最重要的工作之一,可以幫助我們完成很多操作,例如:找出異常值、必要的一些數據轉換等。完成數據分析的最終結果也許就是做一個可交互的數據可視化。
  • Python-matplotlib 學術型散點圖繪製
    本期推文只要介紹學術散點圖的繪製教程,涉及的內容主要還是matplotlib散點圖的繪製,只不過添加了相關性分析,擬合關係式和顏色映射散點密度(大多數的英文文章中多出現此類圖表
  • 見識matplotlib:不常見的一面,折線圖!
    眾所周知,matplotlib是python繪圖的基礎包,能夠生成各種各樣2D或者3D的圖形,用法算是多而全的那種,下邊是matplotlib官網首頁作為例子的幾張圖,大家感受一下:什麼?醜拒?不不不,別激動!其實matplotlib一直是一個低調奢華有內涵的包,需要我們透過它樸實無華的外表認清它豐富多彩的內在,來康康這條妖嬈的曲線,有沒有感受到它的召喚?
  • 從零開始學Python數據分析【16】-- matplotlib(雷達圖)
    【1】--數據類型及結構從零開始學Python數據分析【2】-- 數值計算及正則表達式從零開始學Python數據分析【3】-- 控制流與自定義函數從零開始學Python數據分析【4】-- numpy從零開始學Python數據分析【5】-- pandas(序列部分)從零開始學Python數據分析【6】-- pandas(數據框部分01)
  • Matplotlib圖鑑|基礎散點圖
    首先導入相關庫並查看版本import matplotlibprint(matplotlib.__version__) #查看Matplotlib版本import pandas as pdprint(pd.
  • 可視化技能之Matplotlib(下)|可視化系列02
    本篇繼續探索Matplotlib的強悍可視化能力。Matplotlib動態可視化計算機及通信技術的發展極大豐富了多媒體內容的發展,文不如圖、圖不如動圖;BI近些年也逐漸發展,人們已不滿足於看靜態的圖表。短視頻的火熱也給了動態圖更多的發展空間。動態圖和交互圖表能更生動地表現數據變化、展現數據關聯,傳達更多的信息。插入排序的動態展現生動的動畫有助於我們理解算法。
  • Python數據可視化,Matplotlib繪製「散點圖」的兩種方法!
    散點圖是Matplotlib常用圖形之一,與線形圖類似。但是這種圖形不再由線段連接,而是由獨立的點、圓圈或其他形狀構成。那麼怎麼畫散點圖呢?Matplotlib給出了兩種不同的方法,去畫散點圖。plt.plot函數非常靈活,可以滿足各種不同的可視化配置需求。這是另一個創建散點圖的函數是plt.scatter。它的功能非常強大,其用法與plt.plot函數類似。
  • Python數據分析之matplotlib作圖
    繪製簡單的折線圖下面我們來使用前面介紹過的matplotlib庫繪製一個簡單的折線圖,再對其進行定製,以實現信息更豐富的數據可視化,我們將使用平方數序列1、4、9、16和25來繪製這個圖表。只需向matplotlib提供如下數字,matplotlib就能完成其他的工作:我們首先導入了模塊pyplot,並給它指定了別名plt,以免反覆輸入pyplot。在線示例大都能夠這樣做,我們在這裡也採取這種方法。模塊pyplot包含了很多用於生成圖表的函數。
  • 動態曲線圖(linechart)--Matplotlib繪製
    和 散點圖 的繪製,詳細過程如下:由於需要查某些指標隨時間的變化趨勢,可將數據處理成如下形式(部分):圖表中的 china、usa、japan 等變量可以結合自己的實際需求進行更改,而 time 列則是時間變化。
  • Python數據可視化,無法繞過的matplotlib基礎知識!!!
    matplotlib是python優秀的數據可視化庫,python數據分析必備利器,本文專門為你整理了matplotlib詳細使用方法,來學習吧!--- 以下是正文 ---數據可視化非常重要,因為錯誤或不充分的數據表示方法可能會毀掉原本很出色的數據分析工作。