2017-11-25 243 views
0

我上動態曲線工作jupyter與matplotlib,這意味着在for循環中每個不同的循環提供了一個不同的曲線圖,如下面動態膠乳代碼在matplotlib標題

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() 

線的例子「斧頭.set_title「提供的標題既有恆定的乳膠代碼,也有隨時間變化的數字。我的問題是,我可以在標題中更改乳膠代碼中的數字,但我真的不知道如何更改乳膠代碼中的內容。

在前面的例子中,對於每一個不同的循環,我想不僅是一個不同的情節,但也有不同的乳膠碼標題,問題報告,提供了不同的結果

enter image description here

有任何人都可以爲我提供任何關於它的信息

+1

@ImportanceOfBeingErnest - 只是因爲你使用'.format()'。 OP使用'%'格式化,第二個問題的答案顯示了一個完全有效的解決方案:'r'%(j)6.2f $ y = \ frac {\ sin {(\ pi x%(j)6.2 f)}} {(\ pi x%(j)6.2f)} $「%{'j':j}' – Craig

回答

1

使用format表示法是有意義的。
然後,您需要轉義所有需要成爲MathText字符串一部分的大括號。

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

enter image description here

要格式化format符號的數字,你可以定義小數位({j:.3f})的數量或使用常規數字格式({j:g})。

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

enter image description here

+1

太棒了! –

+0

等等,你能結合r-和f-字符串嗎? –

+0

@PaulH呃,你不需要'r「」'因爲反斜槓可以被轉義「\\」。但是因爲我很少編寫純python 3的代碼,所以我從來沒有使用過'f「」'。 – ImportanceOfBeingErnest