我想在我的轴上有粗体标签,所以我可以使用该图块进行发布。我还需要在图例中以粗体显示线条的标签。 到目前为止,我可以将轴标签和图例设置为我想要的尺寸和重量。我也可以将轴标签的大小设置为我想要的大小,但是我的重量却没有。
以下是一个示例代码:
# plotting libs
from pylab import *
from matplotlib import rc
if __name__=='__main__':
tmpData = np.random.random( 100 )
# activate latex text rendering
rc('text', usetex=True)
rc('axes', linewidth=2)
rc('font', weight='bold')
#create figure
f = figure(figsize=(10,10))
ax = gca()
plot(np.arange(100), tmpData, label=r'\textbf{Line 1}', linewidth=2)
ylabel(r'\textbf{Y-AXIS}', fontsize=20)
xlabel(r'\textbf{X-AXIS}', fontsize=20)
fontsize = 20
fontweight = 'bold'
fontproperties = {'family':'sans-serif','sans-serif':['Helvetica'],'weight' : fontweight, 'size' : fontsize}
ax.set_xticklabels(ax.get_xticks(), fontproperties)
ax.set_yticklabels(ax.get_yticks(), fontproperties)
for tick in ax.xaxis.get_major_ticks():
tick.label1.set_fontsize(fontsize)
for tick in ax.yaxis.get_major_ticks():
tick.label1.set_fontsize(fontsize)
legend()
show()
sys.exit()
这就是我得到的:
为了让轴刻度标签以粗体显示,我知道我错过了什么或做错了什么?
修改
我已使用toms响应更新了我的代码。但是我现在有另一个问题,因为我需要在x轴上使用datetime
,这与正常的y轴没有相同的效果(抱歉没有把它放在原来的问题中,但是我不认为这会改变事情):
# plotting libs
from pylab import *
from matplotlib import rc, rcParams
import matplotlib.dates as dates
# datetime
import datetime
if __name__=='__main__':
tmpData = np.random.random( 100 )
base = datetime.datetime(2000, 1, 1)
arr = np.array([base + datetime.timedelta(days=i) for i in xrange(100)])
# activate latex text rendering
rc('text', usetex=True)
rc('axes', linewidth=2)
rc('font', weight='bold')
rcParams['text.latex.preamble'] = [r'\usepackage{sfmath} \boldmath']
#create figure
f = figure(figsize=(10,10))
ax = gca()
plot(np.arange(100), tmpData, label=r'\textbf{Line 1}', linewidth=2)
ylabel(r'\textbf{Y-AXIS}', fontsize=20)
xlabel(r'\textbf{X-AXIS}', fontsize=20)
ax.xaxis.set_tick_params(labelsize=20)
ax.yaxis.set_tick_params(labelsize=20)
ax.xaxis.set_major_formatter(dates.DateFormatter('%m/%Y'))
ax.xaxis.set_major_locator(dates.MonthLocator(interval=1))
legend()
现在我的结果如下:
似乎这些变化不会影响显示,也不会影响x轴刻度标签的重量。
答案 0 :(得分:7)
我认为问题是因为刻度是在LaTeX数学模式下制作的,所以字体属性不适用。
您可以使用rcParams
通过向LaTeX前导码添加正确的命令来解决此问题。具体来说,您需要使用\ boldmath来获取正确的wieght,并使用\ usepackage {sfmath}来获取sans-serif字体。
此外,您可以使用set_tick_params
设置刻度标签的字体大小。
这里有一些符合你想要的代码:
import numpy as np
from matplotlib import rc,rcParams
from pylab import *
tmpData = np.random.random( 100 )
# activate latex text rendering
rc('text', usetex=True)
rc('axes', linewidth=2)
rc('font', weight='bold')
rcParams['text.latex.preamble'] = [r'\usepackage{sfmath} \boldmath']
#create figure
f = figure(figsize=(10,10))
ax = gca()
plot(np.arange(100), tmpData, label=r'\textbf{Line 1}', linewidth=2)
ylabel(r'\textbf{Y-AXIS}', fontsize=20)
xlabel(r'\textbf{X-AXIS}', fontsize=20)
ax.xaxis.set_tick_params(labelsize=20)
ax.yaxis.set_tick_params(labelsize=20)
legend()
答案 1 :(得分:3)
使用
plt.xticks(x, weight = 'bold')
答案 2 :(得分:2)
labels = axes.get_xticklabels() + axes.get_yticklabels()
[label.set_fontweight('bold') for label in labels]