Pyplot注释:罗马数字

时间:2015-12-09 11:12:58

标签: python matplotlib annotations latex

在python图中,我想用罗马数字加注。即,"我"," II"," III"和" IV"。

现在,直截了当的做法是简单地使用字符串作为" I"," II"等等,但我希望它们可以作为罗马数字排版(例如,包括III的顶部和底部的水平条。

困难主要是使用LateX命令,就像我对其他符号(例如\ alpha)所做的那样,似乎不可能,因为如果想在LateX中使用罗马数字,通常的做法是定义{{ 3}}我不知道如何在python环境中加入它。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

将LaTeX \newcommand放在plt.rcParamstext.latex.preamble中即可。在这里,我使用answer you linked to中的罗马数字命令。为了帮助转义LaTeX字符,我们可以使用原始字符串来简化事情(在字符串前加上r字符)。

import matplotlib.pyplot as plt

# Turn on LaTeX formatting for text    
plt.rcParams['text.usetex']=True

# Place the command in the text.latex.preamble using rcParams
plt.rcParams['text.latex.preamble']=r'\makeatletter \newcommand*{\rom}[1]{\expandafter\@slowromancap\romannumeral #1@} \makeatother'

fig,ax = plt.subplots(1)

# Lets try it out. Need to use a 'raw' string to escape 
# the LaTeX command properly (preface string with r)
ax.text(0.2,0.2,r'\rom{28}')

# And to use a variable as the roman numeral, you need 
# to use double braces inside the LaTeX braces:
for i in range(1,10):
    ax.text(0.5,float(i)/10.,r'\rom{{{}}}'.format(i))

plt.show()

enter image description here