Python 打印标签中的垂直mu:保留原始勾号字体

Python 打印标签中的垂直mu:保留原始勾号字体,python,fonts,matplotlib,tex,rc,Python,Fonts,Matplotlib,Tex,Rc,我有一个问题,我认为会更容易发生。然而,在网上搜索了一段时间后,我一直没有找到解决问题的方法。下面是: 对于使用matplotlib.pyplot创建的绘图,我希望将SI单位微米合并到xlabel中。但是,单位微米需要直立。经过一番努力,我得到了想要的xlabel 我必须生成以下代码: import matplotlib import matplotlib.pyplot as plt matplotlib.rc('text', usetex = True) params = {'text.la

我有一个问题,我认为会更容易发生。然而,在网上搜索了一段时间后,我一直没有找到解决问题的方法。下面是:

对于使用matplotlib.pyplot创建的绘图,我希望将SI单位微米合并到xlabel中。但是,单位微米需要直立。经过一番努力,我得到了想要的xlabel

我必须生成以下代码:

import matplotlib
import matplotlib.pyplot as plt

matplotlib.rc('text', usetex = True)
params = {'text.latex.preamble': [r'\usepackage{siunitx}', r'\usepackage{cmbright}']}
plt.rcParams.update(params)


fig = plt.figure()
ax = fig.add_subplot(1,1,1)

ax.set_xlabel('$\si{\micro \meter}$', fontsize = 16)
ax.set_ylabel("hi", fontsize = 16)

plt.savefig("test.png")
结果如下所示: 这个微米表正是我想要的。然而,问题是x和y记号的字体被改变了。这是因为:

matplotlib.rc('text', usetex = True)
如何将字体值重置为其原始值?或者,在引入tex时,如何确保字体不发生更改

作为参考,我指的原始值如下所示: 除了尝试将字体还原为其原始值外,我还尝试了将micro meter合并到xlabel中的不同方法。这里出现的问题是,它仍然是斜体的,或者它有一个粗体的类型设置。我要找的微米是第一个图中给出的

我希望有人能帮我解决这个问题


Thanx提前

我也在努力解决这样一个问题,即当text.usetex=True时,使记号标签和轴标签保持一致。我设法找到的解决方案并不理想,但目前效果不错

您需要做的是将字体系列设置为“sans serif”,并添加一个使用sans serif数学字体的latex包(sfmath--确保它位于您的tex路径中!)

此外,我必须告诉siunitx软件包检测字体系列,并且我还必须向x标签添加一些额外的文本,以便检测能够实际工作(您可以稍后删除此文本,然后标签仍然可以工作)

对我来说,这会导致: 更一般地说,对于衬线字体,我有以下~/.matplotlib/matploblibrc文件:

font.family    : serif 
text.latex.preamble    :   \usepackage{mathptmx}
对于无衬线:

font.family : sans-serif 
text.latex.preamble :   \usepackage{sfmath}

对我有效的不是使用TEX,而是使用Unicode:

ax.set_xlabel(u'\u03bc')
将标签设置为单个垂直方向

加载
matplotlib
时需要以下设置:

import matplotlib
matplotlib.rcParams['mathtext.fontset'] = 'cm'
matplotlib.rc('font', family='serif', serif='CMU Serif')
import matplotlib.pyplot as plt
这里我使用的是Sourceforge的“Computer Modern Unicode”字体(如果您希望与LaTeX的书写排版及其默认的Computer Modern字体保持一致,强烈建议使用)

但任何带有mu字形的unicode字体都应该可以使用。实际上,CMU Serif的mu在美学上不如SIunitx的mu好,但它是正确的


Python需要重新启动才能生效。

我遇到了同样的问题,这就解决了它:

matplotlibrc文件更改中

mathtext.default : it


谢谢。仍在搜索“正确”的标签,但现在肯定可以。再次感谢!你所说的“正确”是指你例子中的无衬线字体吗?我不知道为什么,但当我运行您的示例(所有matplotlibrc设置都重置)时,我得到测微计标签的衬线字体(使用衬线设置时不会更改)。但是,既然您似乎能够自动获取无衬线,那么如果您使用我建议的无衬线设置会发生什么呢?我设法使其与无衬线一起工作,请参阅我的文章编辑!谢谢这使我离期望的结果又近了一步!现在mu是完美的!“correct”指的是用于“1.0”的字体系列,在使用usetex=True时会发生变化。您好,我现在想使用
amsmath
软件包。当我结合
sfmath
执行此操作时,
amsmath
不会响应。当我删除
sfmath
包时,轴的记号很难看,因为我猜它不再是
sans serif
。有什么办法可以让你的答案中的勾号与
amsmath
软件包结合起来?
mathtext.default : it
mathtext.default : regular