2017-11-25 5 views
0

I auf dynamische Plots auf jupyter mit matplotlib arbeitete, die in einer for-Schleife bedeutet, die jeweils unterschiedlicher Zyklus unten eine andere Handlung, wie im Beispiel liefertdynamischer latex-Code in einem matplotlib Titel

import matplotlib.pyplot as plt 
import numpy as np 
import time 
import matplotlib as mpl 
mpl.rcParams['lines.linewidth'] = 2 
plt.ion() 
%matplotlib notebook 

x = np.arange(-10, 10, 0.01) 

fig = plt.figure(figsize = (12, 7)) 
ax = fig.add_subplot(111) 
ax.grid() 
plt.show() 
for j in range(1,5): 
    ax.set_title(r"%6.2f $y = \frac{\sin{(\pi x j)}}{(\pi x j)}$" % j) 
    y = np.sin(np.pi*x*j)/(np.pi*x*j) 
    line, = ax.plot(x, y, 'b') 
    fig.canvas.draw() 
    time.sleep(1) 
    if j != 4: 
     line.remove() 

die Zeile „ax .set_title "liefert den Titel, der sowohl einen konstanten Latexcode als auch eine Zahl hat, die sich im Laufe der Zeit ändert. Mein Problem ist, dass ich eine Nummer im Titel aus dem Latexcode ändern kann, aber ich weiß wirklich nicht, wie ich ein Stück INSIDE im Latexcode ändern kann.

Im vorherigen Beispiel für jede unterschiedliche Schleife, würde ich nicht nur eine andere Handlung mag, sondern auch einen Titel mit einem anderen Latex-Code, der hier wie berichtet

enter image description here

Gibt es ein anderes Ergebnis liefert Wer kann mir irgendetwas dazu vorschlagen?

+1

@ImportanceOfBeingErnest - nur weil Sie '.format verwendet()'. Das OP verwendet '%' Formatierung und die zweite Antwort auf die Frage, die ich verknüpfte, zeigt eine vollkommen gültige Lösung: 'r"% (j) 6.2f $ y = \ frac {\ sin {(\ pi x% (j) 6.2 f)}} {(\ pi x% (j) 6.2f)} $ "% {'j': j}' – Craig

Antwort

1

Es ist sinnvoll, die Notation format zu verwenden.
Dann müssen Sie alle geschweiften Klammern, die Teil der MathText-Zeichenfolge sein müssen.

plt.title(r"$y = \frac{{\sin{{({j}\pi)}}}}{{({j}\pi)}}$".format(j=3.14159265359)) 

enter image description here

Um die Zahlen in der Notation format formatieren, können Sie die Anzahl der Nachkommastellen ({j:.3f}) oder verwenden Sie das allgemeine Zahlenformat ({j:g}) definieren.

plt.title(r"$y = \frac{{\sin{{({j:.3f}\pi)}}}}{{({j:g}\pi)}}$".format(j=3.14159265359)) 

enter image description here

+1

tolle Zeit für f-Saiten auch! –

+0

gut warten, können sie r- und f-saiten kombinieren? –

+0

@PaulH Nun, Sie würden nicht "r" "' brauchen, weil Backslashes mit "\\" versehen werden können. Da ich aber selten Code für Python 3 schreibe, habe ich 'f'' 'nie benutzt. – ImportanceOfBeingErnest

Verwandte Themen