Seaborn 带有 f 字符串的下标

Seaborn a lower subscript with f-string

我想使用 f-string 绘制一个下标 xticks 的图形,不仅是一位数的大小写,还有两位数的大小写,例如 L_1、L_2、... L_10,L_11,...

如何更正我的代码?

import matplotlib.pylab as plt
import numpy as np; np.random.seed(0)
import seaborn as sns; sns.set_theme()
import numpy as np

fig, ax = plt.subplots(figsize=(12, 10))
cmap = sns.diverging_palette(0, 230, 90, 60, as_cmap=True)
# plot heatmap
connectivity = np.zeros((14,14))
sns.heatmap(connectivity, annot=True, fmt=".2f",
           linewidths=5, cmap=cmap, vmax = 1, vmin = -1, cbar_kws={"shrink": .8}, square=True)

label = [f"$L_{i}$" for i in [1,2,3,4,5,7,9,10,11,12,13,14,15,16]]

plt.yticks(plt.yticks()[0], labels=label, rotation=0)
plt.xticks(plt.xticks()[0], labels=label)

plt.show()

LaTeX 下标命令仅适用于一个字符,除非您将其括在大括号中。

因为你有一个 f-string 你需要转义文字大括号。

这给出:

label = [f"$L_{{{i}}}$" for i in [1,2,3,4,5,7,9,10,11,12,13,14,15,16]]

输出: