gpt4 book ai didi

python - 使用 matplotlib 在绘图脚本中设置 Latex 希腊字母

转载 作者:行者123 更新时间:2023-12-05 01:25:30 33 4
gpt4 key购买 nike

我有一个绘图脚本,我从 JSON 文件加载字幕(变量 subplot_titles):

JSON 文件示例:

"subplot_titles" : {

"0" : "Model: $~w_{0},~w_{a}~$ - flat - optimistic - No $\\gamma$",
"1" : "Model: $~w_{0},~w_{a}~$ - flat - optimistic - With $\\gamma$",
"2" : "Model: $~w_{0},~w_{a}~$ - flat - semi-pessimistic - No $\\gamma$",
"3" : "Model: $~w_{0},~w_{a}~$ - flat - semi-pessimistic - With $\\gamma$"
},

在我的脚本中,我像这样加载这个文件:

 for i, ax in enumerate(np.ravel(axes)):

config = load_config('./config.json')

df = parse_input(config['subplot_files'][i])
df = format_dataframe(df, config)
title = config['subplot_titles'][i]
lgd = plot_barchart(df, ax, title)
bbea.append(lgd)

但是一旦生成图形,我就会有一个丑陋的符号“ Gamma ”,就像这样:

bad gamma

我想显示一个 Latex Gamma 符号。

我试图在绘图脚本中添加 r' 以获得 Latex 支持:

title = config[r'subplot_titles'][i]

但是我得到一个错误。

我该怎么做才能在 Latex 显示下获得这个 Gamma 希腊符号?

更新

给出的解决方案有效,但我想保留 matplotlib 字体以显示在 jSON 文件中的表单下:

"bars" : {

"0" : "$GC_{s}$",
"1" : "$GC_{ph} + WL$",
"2" : "$GC_{s} + GC_{ph} + WL$",
"3" : "$GC_{ph} + WL + XC$",
"4" : "$GC_{s} + (GC_{ph} + WL + XC)$",
"5" : "($GC_{s} + GC_{ph} + WL) + XC2$",
"6" : "$GC_{s} + (GC_{ph} + WL + XC) + XC2$"

},

产生一个很好的图例:

wanted result

对于 subplot_titles我只需要用 Latex 等效符号替换希腊符号,但要小心,使用真正的 Latex 符号\gamma,而不是构成部分的符号matplotlib 的 Latex 就像我上面显示的丑陋的“\gamma”符号一样,并保持所有其余部分不变。

我试着做这个替换:

title = title.replace("\\gamma", "+r\"\\mathit{\\gamma}")

但没有成功。如何执行此渲染?

最佳答案

您可以更改 matplotlib rc 设置以使用 LaTeX,例如在开始绘图之前包含以下代码:

import matplotlib as mpl
mpl.rcParams['text.usetex'] = True

或者,除了使用 LaTeX,您还可以更改 matplotlib 用于排版数学的字体:

mpl.rcParams['mathtext.fontset'] = 'cm'

'cm' 是 Computer Modern,默认的 LaTeX 字体,但也有 other possibilities .

如果您想微调字体选择,LaTeX 可能是更好的选择。这是一个例子:

import matplotlib.pyplot as plt
import matplotlib as mpl

mpl.rcParams['font.family'] = 'sans-serif'
mpl.rcParams['text.usetex'] = True
mpl.rcParams["text.latex.preamble"] = r"\usepackage{cmbright}"

plt.figure(figsize=(5,3))
plt.title(r"$w_{0},w_{a}$ - flat - optimistic - with $\gamma$")
plt.plot([1, 2], [1, 2], 'r-', label=r"$GC_s$")
plt.plot([1, 2], [3, 1], 'b--', label=r"$GC_{ph} + WL$")
plt.plot([1, 2], [2, 0], 'g-.', label=r"$GC_s + GC_{ph} + WL$")
plt.legend()
plt.show()

结果:

sample plot

关于python - 使用 matplotlib 在绘图脚本中设置 Latex 希腊字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70809136/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com