Putting newline in matplotlib label with TeX in Python?

后端 未结 4 1024
半阙折子戏
半阙折子戏 2020-12-24 00:36

How can I add a newline to a plot\'s label (e.g. xlabel or ylabel) in matplotlib? For example,

plt.bar([1, 2], [4, 5])
plt.xlabel(\"My x label\")
plt.ylabel         


        
相关标签:
4条回答
  • 2020-12-24 00:48

    The following matplotlib python script creates text with new line

    ax.text(10, 70, 'shock size \n $n-n_{fd}$')
    

    The following does not have new line. Notice the r before the text

    ax.text(10, 70, r'shock size \n $n-n_{fd}$')
    
    0 讨论(0)
  • 2020-12-24 00:57

    Your example is exactly how it's done, you use \n. You need to take off the r prefix though so python doesn't treat it as a raw string

    0 讨论(0)
  • 2020-12-24 00:58

    You can have the best of both worlds: automatic "escaping" of LaTeX commands and newlines:

    plt.ylabel(r"My long label with unescaped {\LaTeX} $\Sigma_{C}$ math"
               "\n"  # Newline: the backslash is interpreted as usual
               r"continues here with $\pi$")
    

    (instead of using three lines, separating the strings by single spaces is another option).

    In fact, Python automatically concatenates string literals that follow each other, and you can mix raw strings (r"…") and strings with character interpolation ("\n").

    0 讨论(0)
  • 2020-12-24 01:02
    plt.bar([1, 2], [4, 5])
    plt.xlabel("My x label")
    plt.ylabel(r"My long label with $\Sigma_{C}$ math" + "\n" + "continues here")
    

    Just concatenate the strings with a newline that isn't in raw string form.

    0 讨论(0)
提交回复
热议问题