2016-04-26 11 views
0

In einem Python-Plot möchte ich eine sekundäre X-Achse verwenden, um einige alternative Werte anzuzeigen. Ich mag die Latex-Fonts auch sehr gern und möchte, dass diese Fonts im gesamten Plot präsent sind. Ich finde jedoch, dass, wenn ich meine sekundäre Achse aufstelle, die Latexschrift verschwindet. Hier ist ein Mindestarbeitsbeispiel:pyplot: Ändern der Schriftarteigenschaften auf sekundären Achsenbeschriftungen

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

Wie kann ich sicherstellen, dass die Latex-Schrift auf der sekundären Achse fortgesetzt wird?

Antwort

0

Es ist, weil Sie diese Beschriftungen zu Strings machen, wenn Sie AltLabels festlegen. Die unterschiedliche Schriftart, die Sie auf den Hilfsstrichbeschriftungen der primären Achse sehen, liegt daran, dass diese Beschriftungen im Mathematikmodus LaTeX gedruckt werden. So ist die einfache Lösung ist es, die Mathematik-Modus Betreiber der AltLabel Strings hinzuzufügen:

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

(Anmerkung der $ Zeichen)

enter image description here

+0

Fantastisch, danke. Das funktioniert perfekt. Ich hatte eine Ahnung, dass es mit der String-Konvertierung zusammenhing, aber ich wusste nicht, dass Sie die mathematische Umgebung im Format verwenden könnten. –

Verwandte Themen