『壹』 Matplotlib 可視化之箭頭與標注的高級應用
時間線是以時間順序排列的事件列表,其圖形設計通常顯示一個長條,並標有與之平行的日期,用於展示同期的事件。
時間線可以採用任何合適的比例來表示時間,以適應主題和數據。許多人使用線性刻度,其中一個距離單位等於設定的時間量。這種時間刻度取決於時間軸中的事件。
Matplotlib是由John D. Hunter編寫的,首個公開版本於2003年發布。在2012年8月John Hunter去世前,Michael Droettboom被任命為matplotlib的首席開發者,2014年Thomas Caswell加入,目前(2021年)擔任首席開發者。最新版本為3.4,僅支持python 3,而2.2版本是一個長期支持的版本,兼容Python 2和Python 3。
時間線繪圖
時間線繪圖步驟代碼
註解:Matplotlib的zorder屬性決定了物體與前景的距離。zorder值較小的對象出現在更靠近背景的位置,而具有較大值的對象出現在更靠近前面的位置。例如,在製作一個帶有線圖的散點圖時,可以通過增加其zorder來將線向前移動。
標注
要掌握時間軸圖繪制,需要先了解Matplotlib中的標注。標注分為基本標注和高級標注。
關鍵點:箭頭及文本,首先學習下箭頭➡️如何繪制。
箭頭風格
Matplotlib中畫箭頭通常比較困難,推薦使用plt.annotate()函數。該函數既可以創建文字,也可以創建箭頭,並且它創建的箭頭可以進行非常靈活的配置。
箭頭的風格是通過arrowprops字典控制的,其中包含許多可用的選項。由於這些選項在Matplotlib的官方文檔中都有非常詳細的介紹,這里列出一些常用的參數及其設置值。
主要參數:FancyArrowPatch的關鍵字包括:箭頭
箭頭的繪制需要幾個步驟:① 創建兩個點之間的連接路徑,由connectionstyle鍵值控制;② 如果提供了patch對象(patchA和patchB),則會剪切路徑以避開該patch;③ 路徑進一步由提供的像素總量來縮小(shrinkA&shrinkB);④ 路徑轉換為箭頭patch,由arrowstyle鍵值控制。
連接路徑
兩個點之間的連接路徑的創建由connectionstyle鍵控制,並且可用以下樣式。注意,angle3和arc3中的3意味著所得到的路徑是二次樣條段(三個控制點)。當連接路徑是二次樣條時,可以使用一些箭頭樣式選項。
在函數ax.annotate()中的連接路徑的參數arrowprops,而實際控制箭頭樣式的參數是connectionstyle,通過設置不同的connectionstyle以改變不同的箭頭路徑樣式。
例如,我們設置如下參數connectionstyle具體值,並繪制出如下樣式。
箭頭樣式
後根據給定的箭頭樣式將連接路徑(在剪切和收縮之後)變換為箭頭補丁。
在函數ax.annotate()中的箭頭樣式的參數arrowprops,而實際控制箭頭樣式的參數是arrowstyle,通過設置不同的arrowstyle以改變不同的箭頭樣式。
我們可以設置哪些arrowstyle參數呢?可以通過mpatches.ArrowStyle.get_styles()方法查看所有可以設置的樣式。
箭頭位置
xy(箭頭尖端)和xytext位置(文本位置)都以數據坐標為單位。這兩個參數可以通過分別設置xycoords和textcoords來指定xy和xytext的坐標系。
設置xy和xytext的坐標系如下:
通過上述設置完成操作後,設置標注函數:
並且通過上述函數繪制各個事件:
文本注釋
主要參數:matplotlib.text.Text實例有各種屬性,可以通過關鍵字參數配置文本命令(例如,title(),xlabel()和text())。
你可以使用對齊參數horizontalalignment,verticalalignment和multialignment來布置文本。
這里是一個使用text()命令顯示各種對齊方式的例子。在整個代碼中使用transform = ax.transAxes,表示坐標相對於軸邊界框給出,其中0,0是軸的左下角,1,1是右上角。
通過繪制兩個端點及橫線組合,繪制區間線段。
『貳』 python畫箭頭(用內置的函數)怎麼畫
你用的graphics模塊?這不是內置的,雖然它是調用內置的Tkinter畫圖。
option可以是"first","last","both"或"none"。見graphics.py:
def setArrow(self, option):
if not option in ["first","last","both","none"]:
raise GraphicsError(BAD_OPTION)
self._reconfig("arrow", option)
細節要查Tk文檔:
6.6. The canvas line object
In general, a line can consist of any number of segments connected end to end, and each segment can be straight or curved. To create a canvas line object on a canvas C, use:
id = C.create_line ( x0, y0, x1, y1, ..., xn, yn, option, ... )
The line goes through the series of points
(x0,
y0),
(x1,
y1),
…
(xn,
yn).
Options include:
arrow The default is for the line to have no arrowheads. Use
arrow=FIRST to get an arrowhead at the(x0,y0)end of the line. Use
arrow=LAST to get an arrowhead at the far end. Use
arrow=BOTH for arrowheads at both ends.
『叄』 python怎樣把箭頭變為紅色
添加相同的箭頭補丁。
在創建箭頭時,streamplot似乎做了兩件事,將箭頭面片(類型FancyArrowPatch)添加到軸向PatchCollection(c.arrows)添加相同的箭頭補丁。
雖然axisartist能夠很方便地自定義坐標軸的位置和完美地設置箭頭,但對於更多屬性的設置有點乏力,很多參數的微調還是很花費時間的。
『肆』 Python的turtle庫畫圖使用中的問題
『伍』 python數據可視化: 繪制箭頭 matplotlib.pyplot.arrow()
【小白從小學Python、C、Java】 【考研初試+復試+畢業設計】 【Python基礎+AI+數據分析】 python數據可視化: 繪制箭頭 matplotlib.pyplot.arrow()
請問關於以下代碼表述正確的選項是? import matplotlib.pyplot as plt print("【執行】plt.arrow(0, 0, 1, 1, head_width=0.1, head_length=0.1)") plt.arrow(0, 0, 1, 1, head_width=0.1, head_length=0.1) plt.xlim(0, 2) plt.ylim(0, 2) plt.show()
A選項:plt.arrow()用於繪制箭頭 B選項:plt.arrow()用於創建折線圖 C選項:plt.arrow()用於顯示圖像 D選項:plt.arrow()用於創建熱力圖
正確答案是:A
圖1 問題解析
圖2 題目代碼
[太陽]溫馨期待 期待大家提出寶貴建議,互相交流,收獲更大,助教:lxy