I use matplotlib. I need to get xlabels like: [1/8,2/8,3/8,4/8..14/8]. I want to make it in a loop. Therefore, for better view I use TEX in Python. For rendering the fraction expression in the loop I use .format method. But it doesn't work properly. There is some conflict between using of {} in TEX and .format method. I tried to use double {} but it as well doesn't work.
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
xax = ax.xaxis # get x axis
labels = ['0']
for i in range(0, 14):
labels.append(r'$\frac{}{8}$'.format(i)) # when trying to insert i an error occurs
xax.set_ticklabels(labels)
plt.show()
You need to escape the curled brackets ({
) with another curled bracket.
r'$\frac{{{}}}{{8}}$'.format(i)
Here the inner most bracket pair in {{{}}}
is used for formatting. The escape pair {{
is replaced by a single bracket during formatting. Hence r'$\frac{{{}}}{{8}}$'.format(1)
will result in r'$\frac{1}{8}$'
, which is then a valid MathText string.