Thursday, 27 January 2022

Set Latex greek letter in plotting script using matplotlib

I have a plotting script where I load subtitles (variable subplot_titles) from a JSON file :

example of JSON file :

"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$"
},

In my script, I load this file like this :

 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)

But once the figure is generated, I have an uggly symbol "gamma", like this :

bad gamma

I would like to display a Latex gamma symbol.

I tried to add r' in the plotting script to get Latex support :

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

But I get an error.

Could anyone see what can I do to ge this gamma greek symbol under Latex displaying ?

UPDATE:

The solutions given works but I want to keep the matplotlib font for legend which appears under the form in jSON file :

"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$"

},

that produces a nice legend :

wanted result

For the subplot_titles, I have just to replace a greek symbol by the Latex equivalent but caution, with the real Latex symbol \gamma, not the one which makes part of Latex of matplotlib like the uggly "\gamma" symbol I have shown above, and keep all the rest as it is currently.

I tried to make this subsitution :

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

but without success...

How to perform this rendering ?



from Set Latex greek letter in plotting script using matplotlib

No comments:

Post a Comment