2016-04-26 5 views
0

В графике Python я хотел бы использовать вторичную ось X для отображения некоторых альтернативных значений. Я также очень люблю латексные шрифты и хотел бы, чтобы эти шрифты отображались по всему сюжету. Тем не менее, я обнаружил, что когда я устанавливаю свою вторичную ось, шрифт латекса исчезает. Вот минимальный рабочий пример:pyplot: изменение свойств шрифта на этикетках вторичной оси

import numpy as np 
import matplotlib.pyplot as plt 

Xvalues = np.linspace(0,10,100) 
Yvalues = np.sqrt(Xvalues) 
Xticks = np.linspace(0,10,6) 

AltXvalues = np.log10(Xvalues+1) 
AltLabels = ["%.2f" % x for x in AltXvalues] # Round these values 

fig = plt.figure() 
plt.rcParams['text.usetex'] = True 

ax1 = fig.add_subplot(1,1,1) 
ax1.plot(Xvalues, Yvalues) 
ax1.set_xticks(Xticks) 
ax1.set_xlabel('$x_1$') 
ax1.set_ylabel('$y$') 

ax2 = ax1.twiny() 
ax2.set_xlabel('$\\log_{10}\\,(x_1+1)$') 
ax2.set_xticks(Xticks) 
ax2.set_xticklabels(AltLabels) 

plt.show() 

Example

Как я могу убедиться, что латексная шрифта продолжается на вспомогательной оси?

ответ

0

Потому что вы делаете эти ярлыки в строках, когда вы устанавливаете AltLabels. Различный шрифт, который вы видите на ярлыках метки основной оси, состоит в том, что эти метки печатаются в математическом режиме LaTeX. Таким образом, простое исправление является добавление операторов математики режима в AltLabel строк:

AltLabels = ["$%.2f$" % x for x in AltXvalues] # Round these values 

(Обратите внимание на $ знаки)

enter image description here

+0

Потрясающе, спасибо. Это работает отлично. У меня была догадка, что это связано с преобразованием строк, но я не знал, что вы можете использовать математическую среду в формате. –

Смежные вопросы