在 relplot 子图标题中格式化字符串

Formatting string in relplot subplot title

请注意这是我之前 post.

的编辑版本

我正在尝试格式化在 Seaborn 中使用 relplot 生成的子图的标题。我正在使用 set_titles 选项并包括 {col_name} 元素。我想在 {col_name} 之前加上来自格式化字符串数组 "plotvarnames"(例如,"I_{bs}=")的动态字符串,然后再放在 {col_name} 之前。以下代码行导致错误消息 "name 'col_name' is not defined":

plotvars=['nis','Ds','Ibs','kVssH','kVssL','kHL']
plotvarstrings=["r'$\nu_s$'","r'$D_s$'","r'$I_{bs}$'","r'$k_{vSSH}$'","r'$k_{vSSL}$'","r'$k_{HL}$'"]
for i,vname in enumerate (plotvars):   g=sns.relplot(x="xvar",y="yvar",col=vname,hue="huevar",col_wrap=3,kind="scatter",palette=["b","r"],data=df,legend="full").set_titles(f"plotvarstrings[i]={col_name}")

如何获得组合的、格式化的字符串?

啊哈,我想通了:你需要转义括号。将 plotvarstrings 更改为以下内容(注意双 {{}}:

plotvarstrings=['r[$\nu_s$]','r[$D_s$]','r'$I_{{bs}}$]','r[$k_{{vSSH}}$]',
                'r[$k_{{vSSL}}$]','r[$k_{{HL}}$]']

那么你可以这样做:

.set_titles(plotvarstrings[i] + "={col_name}")