Matplotlib:plotting(譯)

来源:http://www.cnblogs.com/yl153/archive/2016/10/14/5956104.html
-Advertisement-
Play Games

感謝 非常感謝Bill Wing和Christoph Deil的審閱和更正。 作者:Nicolas Rougier, Mike Müller, Gaël Varoquaux 本章內容: 介紹 簡單繪圖 圖形,子圖,軸線和刻度 其他類型的圖形:示例和練習 教程之外的內容 快速參考 4.1 介紹 Mat ...


感謝

非常感謝Bill Wing和Christoph Deil的審閱和更正。

作者:Nicolas Rougier, Mike Müller, Gaël Varoquaux

本章內容:

  • 介紹
  • 簡單繪圖
  • 圖形,子圖,軸線和刻度
  • 其他類型的圖形:示例和練習
  • 教程之外的內容
  • 快速參考

4.1  介紹

Matplotlib可能是二維圖形中最常用的Python包。它提供了一個非常快的可視化Pyhton數據的方法和許多可供發佈的格式化圖形。我們要以交互方式探索Matplotlib大多數常見情況。

4.1.1  IPython和Matplotlib模式

Ipython是一個增強的互動式Python Shell。它有許多有趣的功能,包括命名輸入和輸出、訪問Shell命令、改進調試和更多內容。它是Pyhton中科學計算工作流的核心,與Matplotlib結合一起使用。

關於Matlab/Mathematica類似功能的互動式Matplotlib會話,我們使用IPython和它的特殊Matplotlib模式,使能夠非阻塞繪圖。

Ipython console  當使用IPython控制台時,我們以命令行參數--matplotlib啟動它(-pylab命令被用在非常老的版本中)

IPthon notebook  在IPthon notebook中,我們在notebook的起始處插入以下魔法函數:%matplotlib inline

4.1.2  pyplot

pyplot為matplotlib面向對象的繪圖庫提供了一個程式介面。它是接近於Matlab的建模工具。因此,plot中的大多數繪圖命令都具有類似的Matlab模擬參數。重要的命令用交互示例解釋。

from matplotlib import pyplot as plt

 4.2  簡單繪圖

在本節中,我們要在同一個圖上繪製餘弦和正弦函數,我們將從預設設置開始,逐步充實圖形,使其變得更好。

第一步:獲取正弦和餘弦函數的數據

import numpy as np

X = np.linspace(-np.pi, np.pi, 256, endpoint=True)
C, S = np.cos(X), np.sin(X)

X現在是一個numpy數組,有256個值,範圍從-π到+π(包括),C是餘弦(256個值),S是正弦(256個值)。

要運行該示例,你可以在IPython互動式會話中鍵入它:

$ ipython --pylab

這使我們來到IPython命令提示符:

IPython 0.13 -- An enhanced Interactive Python.
? -> Introduction to IPython's features.
%magic -> Information about IPython's 'magic' % functions.
help -> Python's own help system.
object? -> Details about 'object'. ?object also works, ?? prints more.
Welcome to pylab, a matplotlib-based Python environment.
For more information, type 'help(pylab)'.

你也可以下載每個例子,使用常規Python命令運行它,但是你會失去交互數據操作。

$ python exercice_1.py

你可以通過點擊相應的圖形來獲取每個步驟的源。

4.2.1  使用預設設置繪圖

Documentation

  • plot tutorial
  • plot() command
import numpy as np
import matplotlib.pyplot as plt

X = np.linspace(-np.pi, np.pi, 256, endpoint=True)
C, S = np.cos(X), np.sin(X)

plt.plot(X, C)
plt.plot(X, S)

plt.show()

 4.2.2  實例化預設值

 

Documentation

  • Customizing matplotlib
import numpy as np
import matplotlib.pyplot as plt

# Create a figure of size 8x6 inches, 80 dots per inch
plt.figure(figsize=(8, 6), dpi=80)

# Create a new subplot from a grid of 1x1
plt.subplot(1, 1, 1)

X = np.linspace(-np.pi, np.pi, 256, endpoint=True)
C, S = np.cos(X), np.sin(X)

# Plot cosine with a blue continuous line of width 1 (pixels)
plt.plot(X, C, color="blue", linewidth=1.0, linestyle="-")

# Plot sine with a green continuous line of width 1 (pixels)
plt.plot(X, S, color="green", linewidth=1.0, linestyle="-")

# Set x limits
plt.xlim(-4.0, 4.0)

# Set x ticks
plt.xticks(np.linspace(-4, 4, 9, endpoint=True))

# Set y limits
plt.ylim(-1.0, 1.0)

# Set y ticks
plt.yticks(np.linspace(-1, 1, 5, endpoint=True))

# Save figure using 72 dots per inch
# plt.savefig("exercice_2.png", dpi=72)

# Show result on screen
plt.show()

4.2.3  改變顏色和線寬

Documentation

  • Controlling line properties
  • Line API

第一步,我們要將餘弦函數設置為藍色,正弦函數設置為紅色,並且將它們都設置為稍微粗的線型。我們也會稍微改變一下圖形的大小,使其更加水平。

...
plt.figure(figsize=(10, 6), dpi=80)
plt.plot(X, C, color="blue", linewidth=2.5, linestyle="-")
plt.plot(X, S, color="red", linewidth=2.5, linestyle="-")
...

4.2.4  設置限定值

 

Documentation

  • xlim() command
  • ylim() command

當前圖形的限定值有點緊湊,我們想要一些空間,以便清楚地查看所有數據點。

...
plt.xlim(X.min() * 1.1, X.max() * 1.1)
plt.ylim(C.min() * 1.1, C.max() * 1.1)
...

4.2.5  設置刻度值

Documentation

  • xticks() command
  • yticks() command
  • Tick container
  • Tick locating and formatting
...
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi])
plt.yticks([-1, 0, +1])
...

 

 

4.2.6  設置刻度標記

 

Documentation

  • Working with text
  • xticks() command
  • yticks() command
  • set_xticklabels()
  • set_yticklabels()
...
plt.xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],
[r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])
plt.yticks([-1, 0, +1],
[r'$-1$', r'$0$', r'$+1$'])
...

 

 

4.2.7  運動自旋

 

Documentation

  • Spines
  • Axis container
  • Transformations tutorial
...
ax = plt.gca() # gca stands for 'get current axis'
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))
...

 

 

4.2.8  添加圖例

 

Documentation

  • Legend guide
  • legend() command
  • Legend API
...
plt.plot(X, C, color="blue", linewidth=2.5, linestyle="-", label="cosine")
plt.plot(X, S, color="red", linewidth=2.5, linestyle="-", label="sine")
plt.legend(loc='upper left')
...

 

4.2.9  註釋一些點

Documentation

  • Annotating axis
  • annotate() command
...

t = 2 * np.pi / 3
plt.plot([t, t], [0, np.cos(t)], color='blue', linewidth=2.5, linestyle="--")
plt.scatter([t, ], [np.cos(t), ], 50, color='blue')

plt.annotate(r'$sin(\frac{2\pi}{3})=\frac{\sqrt{3}}{2}$',
xy=(t, np.sin(t)), xycoords='data',
xytext=(+10, +30), textcoords='offset points', fontsize=16,
arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))

plt.plot([t, t],[0, np.sin(t)], color='red', linewidth=2.5, linestyle="--")
plt.scatter([t, ],[np.sin(t), ], 50, color='red')

plt.annotate(r'$cos(\frac{2\pi}{3})=-\frac{1}{2}$',
xy=(t, np.cos(t)), xycoords='data',
xytext=(-90, -50), textcoords='offset points', fontsize=16,
arrowprops=dict(arrowstyle="->", connectionstyle="arc3,rad=.2"))

...

 

4.2.10  


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、安裝環境 安裝.Net Core SDK 安裝VS2015 Update3 安裝DotNetCore.1.0.1-VS2015Tools.Preview2.0.2.exe 2、新建Core工程 項目結構圖 3、運行 如果選擇IIS Express啟動方式,埠則隨機,如果選擇項目名稱運行預設埠 ...
  • 問題一:USB的傳輸線結構是如何的呢? 答案一:一條USB的傳輸線分別由地線、電源線、D+、D-四條線構成,D+和D-是差分輸入線,它使用的是3.3V的電壓(註意哦,與CMOS的5V電平不同),而電源線和地線可向設備提供5V電壓,最大電流為500MA(可以在編程中設置的,至於硬體的實現機制,就不要管 ...
  • 一、匿名函數lambda lambda argument1,argument2,...argumentN :expression using arguments 1、lambda是一個表達式,而不是一個語句。 因為這一點,lambda可以出現在python語法不允許def出現的地方 例如,在一個列表 ...
  • 對文件路徑的操作 os.path.split(p)函數返回一個路徑的目錄名和文件名。 os.path.splitext():分離文件名與擴展名 os.path.isfile()和os.path.isdir()函數分別檢驗給出的路徑是一個文件還是目錄。 os.path.isabs(path):判斷一個 ...
  • http://www.cnblogs.com/MnCu8261/p/5418632.html ...
  • os模塊提供了對目錄或者文件的新建/刪除/查看文件屬性,還提供了對文件以及目錄的路徑操作。比如說:絕對路徑,父目錄…… os.sep可以取代操作系統特定的路徑分隔符。windows下為 “\\”,Linux下為"/" os.linesep字元串給出當前平臺使用的行終止符。例如,Windows使用'\ ...
  • 今天來總結下python3.4版本字典的一些操作方法。 字典是Python裡面一種無序存儲結構,存儲的是鍵值對 key - value。關鍵字應該為不可變類型,如字元串、整數、包含不可變對象的元組。字典的創建很簡單,用 d = {key1 : value2, key2 : value2}的形式就可以 ...
  • 該隨筆是記錄我的第一個python程式,一個爬去指定圖片站點的所有圖集,現在還是一個非常簡陋的單線程程式。下一步是改寫成多線程,雖然python多線程被詆毀得一塌糊塗。同時加上異常處理。 近來練習python程式,仿照別人的爬蟲寫一個自己的爬蟲來練練手。在編寫的過程中遇到各種問題,中文編碼、請求不到 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...