2013-05-31 99 views
4

我想創建一個點,其中一些點有一個向下的箭頭(參見下圖)。在天文學中,這表明真實值實際上低於測量值。注意只有一些點具有這個符號。matplotlib中的向下箭頭符號

我想知道如何在matplotlib中創建這樣的符號。是否有可以使用的向下箭頭符號?

感謝您的幫助提前!

enter image description here

回答

9

當然可以。

當調用matplotlibs繪圖功能,設置marker

  • 如果像caretdown東西不適合你,你可以通過的(X,Y)對,這是一個列表創建自己的標記傳遞給路徑藝術家。 x/y是0 ... 1歸一化座標,它們被縮放到設置的標記大小。
  • 您也可以將現有的Path實例作爲傳遞,這可以實現更大的靈活性。
  • 正如tom10在註釋中提到的,您還可以以$…$的形式將字符串作爲標記傳遞,其中是任意文本,包括Unicode字符,如果您的字體支持它(這些日子應該是這種情況)。 Unicode中的向下箭頭:↓(或\u2193,導致$\u2193$作爲標記。請注意,這必須是Python 2.x中的unicode字符串[前置])。 Unicode Block Arrows @ Wikipedia
  • 你也可以嘗試傳遞一個Arrow實例作爲標記,但我不確定這是否有效。
+2

1:你也可以使用符號從字體(HTTP://計算器。com/questions/15866862/matplotlib-custom-markers),並且有很多箭頭,但由於箭頭非常容易,所以我喜歡'Path'建議。 – tom10

+0

是的,\ u333是最簡單快捷的方式! – Rohit

2

我的問題的答案由Tom0和Dom0回答。不過,我只是想幫助像我這樣的新手理解如何繪製這些箭頭。以下是我找到並編輯的代碼,以包含上述示例和建議中的內容。我希望這會幫助人們快速理解。我不想要點。

如果你喜歡這個例子,請感謝Dom0而不是我。 :-)

import numpy as np 
import matplotlib.pyplot as plt 

symbols = [u'\u2193']  # this helps you get the symbol 

x = np.arange(10.) 
y = np.exp(-x/2.) 

plt.figure() 
for i, symbol in enumerate(symbols): 
    y2 = np.exp(-x/2.) 
    plt.plot(x, y, 'o')    # plotting with field circles 
    plt.plot(x, y2, 'g')    # plotting with green line 
    for x0, y0 in zip(x, y2): 
     plt.text(x0, y0, symbol, fontname='STIXGeneral', size=30, va='center', ha='center', clip_on=True) 

plt.show() 
+0

您可以編輯您的問題並在其中包含此代碼。你也可以將你的答案標記爲社區維基(這意味着你不會得到代表)。 – tacaswell

+0

即使只有一個符號,我是否需要一個for循環?如果沒有循環,你會怎麼做? – Rohit

+0

我不明白你的問題。只是'symbol = u'\ u2193'' for循環是爲了使它更通用。 – tacaswell

0

Matplotlib支持在內置乳膠的一個子集在稱爲mathtext的模塊中。主要目的是正確渲染數學和科學方程和符號,但也有大量的箭頭符號可以很容易地用於您的圖形。以下鏈接是編寫數學表達式的教程。靠近頁面底部的是大約80個箭頭符號的列表。

https://matplotlib.org/users/mathtext.html#mathtext-tutorial

實例:

plt.plot(x, y, marker=r'$\uparrow$') 
plt.plot(x, y, marker=r'$\downarrow$')