在python图中,我想用罗马数字加注。即,"我"," II"," III"和" IV"。
现在,直截了当的做法是简单地使用字符串作为" I"," II"等等,但我希望它们可以作为罗马数字排版(例如,包括III的顶部和底部的水平条。
困难主要是使用LateX命令,就像我对其他符号(例如\ alpha)所做的那样,似乎不可能,因为如果想在LateX中使用罗马数字,通常的做法是定义{{ 3}}我不知道如何在python环境中加入它。
有什么想法吗?
答案 0 :(得分:1)
将LaTeX \newcommand
放在plt.rcParams
的text.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()