Matplotlib使用文本而不是标记BUT不是最好的方法吗?

时间:2016-05-03 12:36:34

标签: python-3.x matplotlib

我想确保我在这里正确的轨道,因为这似乎对Matplotlib来说非常麻烦。我想在标题上使用标签作为标记,并使其在某种程度上起作用。它使用mathtext但是我想知道是否还有其他方法可以做到这一点?这是代码。

import matplotlib.pyplot as plt
x = []
y = []

symbol = "AAPL"

x = range(5)
y = [5,10,12,15,11]

plt.plot(x,y,lw=2.5,color='r',linestyle='solid',marker=r"$ {} $".format(symbol),markersize=25)

plt.show()

1 个答案:

答案 0 :(得分:0)

我不是100%确定你想要什么,但在下面我列出了一些我知道的将文本放入特定位置的图表的选项(基本上是一个标记)。

1)您可以通过unicode使用文本/字符作为标记。这是通过在mathtext字符中添加unicode值来完成的。例如。拿你的例子代码;您可以通过添加' u'来使标记成为unicode字符。在字符串之前(在python 3中不需要),然后是' \ u'和一个4位数字。这将产生一个unicode标记。并非所有都可行,因为它取决于您的系统的字体是否支持它。您可以在此处找到一长串列表:http://unicode-table.com/en/#latin-extended-a

plt.plot(x,y,lw=2.5,color='r',linestyle='solid',marker=u'$\u2609$',markersize=25)

\ u2609将产生一个太阳'即一个圆点,其中心有一个点。

2)plt.text(...)使用此功能可以将您选择的文本添加到您指定的坐标。

http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.text

我相信坐标将对应于文本框的左下角,但您可以随意使用它以确保您是否愿意。 E.g。

plt.text(x,y,'string',fontsize=18)

但是,这必须在各个点上完成,不会在数据上划一条线;它不像“情节”那样有效。虽然你总是可以用随后的线图强行在顶部强行一条线。这种方法更令人痛苦并且几乎不是最佳的,但它可以完成工作,如果你想要一个标记的字符串,它就非常有用。