2013-05-31 95 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$')