如何在python中格式化这些字符串

时间:2018-09-25 06:47:08

标签: python numpy matplotlib matrix format

.format()绘图中使用matplotlib时,我遇到一些问题:假设我有一个矩阵A = np.column_stack([[0, 1], [-1, 0]]),并且必须在我的绘图中显示此矩阵。也可以根据我的需要更改此矩阵。因此,我使用了以下代码,但它给出了错误。您能告诉我如何执行此任务吗?当我尝试显示$2\hat{i}+5 \hat{j}$之类的向量时,我也遇到类似的问题:

我尝试对矩阵进行以下操作:

A = np.column_stack([[0, 1], [-1, 0]])
matrix = r'$\left( \begin{array}{ll} {a11} & {a12} \\ {a21} & {a22} \end{array} \right)$'.format(a11=A[0][0], a12=A[0][1], a21=A[1][0], a22=A[1][1])
plt.title(matrix)

输出:

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-89-12cfe5180092> in <module>()
     12 
     13 A = np.column_stack([[0, 1], [-1, 0]]) #Matrix
---> 14 title = r'$\left( \begin{array}{ll} {a11} & {a12} \\ {a21} & {a22} \end{array} \right)$'.format(a11=A[0][0], a12=A[0][1], a21=A[1][0], a22=A[1][1])
     15 
     16 #Plotting:

KeyError: 'array'

我尝试对向量进行以下操作:

x = [2,3]
plt.text(2,3,'${a}\hat{i}+{b}\hat{j}$'.format(a= x[0], b=x[1]))

输出:

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-92-31281b09369d> in <module>()
     32 
     33 
---> 34 plt.text(2,3,'${a}\hat{i}+{b}\hat{j}$'.format(a= x[0], b=x[1]))
     35 
     36 #plt.title(title, y = 1.03)

KeyError: 'i'

1 个答案:

答案 0 :(得分:0)

我已使用您的第二个示例为简单说明问题提供了答案。

x = [2,3]
plt.text(2,3,'${a}\hat{i}+{b}\hat{j}$'.format(a= x[0], b=x[1]))

这将返回KeyError: 'i',因为尚未在{i}语句中设置字符串中指定为.format()的数组变量。如果仅将i添加到您的.format()语句中也是失败的,因为也未指定j

有关工作示例,请参见以下内容:

x = [2,3]
plt.text(2,3,'${a}\hat{i}+{b}\hat{j}$'.format(a= x[0], b=x[1], i="SOMETHING", j="SOMETHING"))

摘要:{}语句中需要设置.format()中的所有内容。