是否可以将python字符串格式方法与matplotlibs latex功能一起使用?

时间:2018-01-15 13:34:54

标签: python matplotlib

使用matplotlib,可以使用乳胶标记轴和图。即。

import matplotlib.pyplot as plt

data = pandas.DataFrame({'A': [1, 2, 3, 4, 5],
                         'B': [6, 7, 8, 9, 10],
                         'C': [11, 12, 13, 14,15]})
data['A/B'] = data['A']/data['B']
plt.plot(data['C'], data['A/B'])
new_name1 = 'new_name'
new_name2 = 'new_name'
plt.title(r'$\frac{A}{B}$')
plt.show()

enter image description here

我想将latex与python的字符串.format方法结合起来。 (虽然在这个抽象的例子中没有必要,但这是我自己的工作)。

import matplotlib.pyplot as plt

data = pandas.DataFrame({'A': [1, 2, 3, 4, 5],
                         'B': [6, 7, 8, 9, 10],
                         'C': [11, 12, 13, 14,15]})
data['A/B'] = data['A']/data['B']
plt.plot(data['C'], data['A/B'])
new_name1 = 'new_name1'
new_name2 = 'new_name2'
plt.title(r'$\frac{\{\}}{\{\}}$'.format(new_name1, new_name2))
plt.show()

给了我:

Traceback (most recent call last):
  File "/home/b3053674/Documents/LargeStudy/large_study/plot_locally.py", line 912, in <module>
    plt.title(r'$\frac{\{\}}{\{\}}$'.format(new_name1, new_name2))
KeyError: '\\{\\}'

import matplotlib.pyplot as plt

data = pandas.DataFrame({'A': [1, 2, 3, 4, 5],
                         'B': [6, 7, 8, 9, 10],
                         'C': [11, 12, 13, 14,15]})
data['A/B'] = data['A']/data['B']
plt.plot(data['C'], data['A/B'])
new_name1 = 'new_name'
new_name2 = 'new_name'
plt.title(r'$\frac{{}}{{}}$'.format(new_name1, new_name2))
plt.show()

给了我:

ValueError: 
\frac{}{}
     ^
Expected \frac{num}{den} (at char 5), (line:1, col:6)

是否可以以这种方式使用乳胶字符串格式?如果是这样,我该怎么办?

2 个答案:

答案 0 :(得分:2)

你需要三个大括号:

plt.title(r'$\\frac{{{}}}{{{}}}$'.format(new_name1, new_name2))

内部对{}将使用给定变量进行格式化,外部{{}}{ }和{{1} }}

答案 1 :(得分:1)

一种简单的方法是使用printf - 就像格式化:

data = "\frac{%s}{%s}" % ("A", "B")