格式字符串中的 Matplotlib 下标
Matplotlib subscript in format string
我知道 here 之前有人问过这个问题,但给出的答案对我不起作用..
当我将 {} 放在我的下标周围时,我遇到了关键错误。无论我使用 "G${LA}$" 还是 "G{LA}".
都会发生这种情况
作为编辑,这是我使用的代码的简化版本:
X=np.array(random.sample(range(1000),10))
Y=np.array(random.sample(range(1000),10))
plt.clf()
f, ax =plt.subplots(1,1)
b, a = np.polyfit(X,Y, 1)
# 3.5 Calculate Pearson's correlation
r, SE = stats.pearsonr(X, Y)
r2 = r*r
# 3.6 Regression line to be added to plot - anchored text automatically locates the text, without the need to specifying the x,y coordinates
anchored_text = AnchoredText("GLA = {:3.2f}*GLD + {:3.2f}\n\nPearson's R = {:3.2f}, SE = {:3.2f}\n $R^2$ = {:3.2f}".format(b,a,r,SE,r2), loc=2)
# 3.7 Plot
ax = sns.regplot(X, Y, color='g')
ax.add_artist(anchored_text)
plt.show()
现在,如果我添加下标,它会抛出错误:
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-31-00e10c71309f> in <module>()
19
20 # 3.6 Regression line to be added to plot - anchored text automatically locates the text, without the need to specifying the x,y coordinates
---> 21 anchored_text = AnchoredText(r"G$_{LA}$ = {:3.2f}*GLD + {:3.2f}\n\nPearson's R = {:3.2f}, SE = {:3.2f}\n $R^2$ = {:3.2f}".format(b,a,r,SE, r2), loc=2)
22
23 # 3.7 Plot
KeyError: 'LA'
会不会是因为我使用的是AnchoredText?或者自发布其他主题以来有什么变化吗?
正如@NipunBatra 在评论中所说,{LA}
似乎被理解为字符串格式的一部分。为了解决这个问题,在 {LA}
周围添加和额外的一对花括号。您的 anchored_text
将变为:
anchored_text = AnchoredText(r"G$_{{LA}}$ = {:3.2f}*GLD + {:3.2f}\n\nPearson's R ="
r" {:3.2f}, SE = {:3.2f}\n $R^2$ = {:3.2f}".format(b,a,r,SE, r2), loc=2)
我知道 here 之前有人问过这个问题,但给出的答案对我不起作用.. 当我将 {} 放在我的下标周围时,我遇到了关键错误。无论我使用 "G${LA}$" 还是 "G{LA}".
都会发生这种情况作为编辑,这是我使用的代码的简化版本:
X=np.array(random.sample(range(1000),10))
Y=np.array(random.sample(range(1000),10))
plt.clf()
f, ax =plt.subplots(1,1)
b, a = np.polyfit(X,Y, 1)
# 3.5 Calculate Pearson's correlation
r, SE = stats.pearsonr(X, Y)
r2 = r*r
# 3.6 Regression line to be added to plot - anchored text automatically locates the text, without the need to specifying the x,y coordinates
anchored_text = AnchoredText("GLA = {:3.2f}*GLD + {:3.2f}\n\nPearson's R = {:3.2f}, SE = {:3.2f}\n $R^2$ = {:3.2f}".format(b,a,r,SE,r2), loc=2)
# 3.7 Plot
ax = sns.regplot(X, Y, color='g')
ax.add_artist(anchored_text)
plt.show()
现在,如果我添加下标,它会抛出错误:
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-31-00e10c71309f> in <module>()
19
20 # 3.6 Regression line to be added to plot - anchored text automatically locates the text, without the need to specifying the x,y coordinates
---> 21 anchored_text = AnchoredText(r"G$_{LA}$ = {:3.2f}*GLD + {:3.2f}\n\nPearson's R = {:3.2f}, SE = {:3.2f}\n $R^2$ = {:3.2f}".format(b,a,r,SE, r2), loc=2)
22
23 # 3.7 Plot
KeyError: 'LA'
会不会是因为我使用的是AnchoredText?或者自发布其他主题以来有什么变化吗?
正如@NipunBatra 在评论中所说,{LA}
似乎被理解为字符串格式的一部分。为了解决这个问题,在 {LA}
周围添加和额外的一对花括号。您的 anchored_text
将变为:
anchored_text = AnchoredText(r"G$_{{LA}}$ = {:3.2f}*GLD + {:3.2f}\n\nPearson's R ="
r" {:3.2f}, SE = {:3.2f}\n $R^2$ = {:3.2f}".format(b,a,r,SE, r2), loc=2)