matplotlib 设置字体计算机现代和粗体
matplotlib set up font computer modern and bold
我想要一个字体为“计算机现代”(即 Latex 风格)但 x 刻度和 y 刻度为粗体的图。
由于最近升级了matplotlib,我之前的程序已经不能用了。
这是我的老程序:
plt.rc('font', family='serif',size=24)
matplotlib.rc('text', usetex=True)
matplotlib.rc('legend', fontsize=24)
matplotlib.rcParams['text.latex.preamble'] = [r'\boldmath']
这是输出消息:
test_font.py:26: MatplotlibDeprecationWarning: Support for setting an rcParam that expects a str value to a non-str value is deprecated since 3.5 and support will be removed two minor releases later.
matplotlib.rcParams['text.latex.preamble'] = [r'\boldmath']
我决定一个可能的解决方案是使用“computer modern”作为字体。这是我的例子:
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
font = {'family' : 'serif',
'weight' : 'bold',
'size' : 12
}
matplotlib.rc('font', **font)
# Data for plotting
t = np.arange(0.0, 2.0, 0.01)
s = 1 + np.sin(2 * np.pi * t)
fig, ax = plt.subplots(1,figsize=(9,6))
ax.plot(t, s)
ax.set(xlabel='time (s) $a_1$', ylabel='voltage (mV)',
title='About as simple as it gets, folks')
ax.grid()
fig.savefig("test.png")
plt.show()
这是结果:
但是,我无法在字体中设置字体样式。
我尝试将字体系列设置为“cmr10”。这是代码:
font = {'family' : 'serif',
'weight' : 'bold',
'size' : 12,
'serif': 'cmr10'
}
matplotlib.rc('font', **font)
似乎“cmr10”使黑体选项消失了。
我犯了一些错误吗?
您有其他可能的解决方案吗?
谢谢
您仍然可以使用您的旧程序,但略有不同。您得到的 MatplotlibDeprecationWarning
表明该参数需要一个 str
值,但它得到了其他东西。在这种情况下,您将其作为 list
传递。去掉括号就可以了:
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
plt.rc('font', family='serif',size=24)
matplotlib.rc('text', usetex=True)
matplotlib.rc('legend', fontsize=24)
matplotlib.rcParams['text.latex.preamble'] = r'\boldmath'
# Data for plotting
t = np.arange(0.0, 2.0, 0.01)
s = 1 + np.sin(2 * np.pi * t)
fig, ax = plt.subplots(1,figsize=(9,6))
ax.plot(t, s)
ax.set(xlabel='time (s) $a_1$', ylabel='voltage (mV)',
title='About as simple as it gets, folks')
ax.grid()
fig.savefig("test.png")
plt.show()
上面的代码生成了这个图,没有任何错误:
我想要一个字体为“计算机现代”(即 Latex 风格)但 x 刻度和 y 刻度为粗体的图。
由于最近升级了matplotlib,我之前的程序已经不能用了。
这是我的老程序:
plt.rc('font', family='serif',size=24)
matplotlib.rc('text', usetex=True)
matplotlib.rc('legend', fontsize=24)
matplotlib.rcParams['text.latex.preamble'] = [r'\boldmath']
这是输出消息:
test_font.py:26: MatplotlibDeprecationWarning: Support for setting an rcParam that expects a str value to a non-str value is deprecated since 3.5 and support will be removed two minor releases later.
matplotlib.rcParams['text.latex.preamble'] = [r'\boldmath']
我决定一个可能的解决方案是使用“computer modern”作为字体。这是我的例子:
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
font = {'family' : 'serif',
'weight' : 'bold',
'size' : 12
}
matplotlib.rc('font', **font)
# Data for plotting
t = np.arange(0.0, 2.0, 0.01)
s = 1 + np.sin(2 * np.pi * t)
fig, ax = plt.subplots(1,figsize=(9,6))
ax.plot(t, s)
ax.set(xlabel='time (s) $a_1$', ylabel='voltage (mV)',
title='About as simple as it gets, folks')
ax.grid()
fig.savefig("test.png")
plt.show()
这是结果:
但是,我无法在字体中设置字体样式。
我尝试将字体系列设置为“cmr10”。这是代码:
font = {'family' : 'serif',
'weight' : 'bold',
'size' : 12,
'serif': 'cmr10'
}
matplotlib.rc('font', **font)
似乎“cmr10”使黑体选项消失了。 我犯了一些错误吗? 您有其他可能的解决方案吗?
谢谢
您仍然可以使用您的旧程序,但略有不同。您得到的 MatplotlibDeprecationWarning
表明该参数需要一个 str
值,但它得到了其他东西。在这种情况下,您将其作为 list
传递。去掉括号就可以了:
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
plt.rc('font', family='serif',size=24)
matplotlib.rc('text', usetex=True)
matplotlib.rc('legend', fontsize=24)
matplotlib.rcParams['text.latex.preamble'] = r'\boldmath'
# Data for plotting
t = np.arange(0.0, 2.0, 0.01)
s = 1 + np.sin(2 * np.pi * t)
fig, ax = plt.subplots(1,figsize=(9,6))
ax.plot(t, s)
ax.set(xlabel='time (s) $a_1$', ylabel='voltage (mV)',
title='About as simple as it gets, folks')
ax.grid()
fig.savefig("test.png")
plt.show()
上面的代码生成了这个图,没有任何错误: