Python matplotlib使日期的轴标记标签加粗
我希望在轴上有粗体标签,以便可以使用绘图进行发布。我还需要将图例中线条的标签用粗体绘制。 到目前为止,我可以将轴标签和图例设置为我想要的大小和重量。我还可以将轴标签的大小设置为我想要的大小,但是我的重量不够 下面是一个示例代码:Python matplotlib使日期的轴标记标签加粗,python,matplotlib,tex,Python,Matplotlib,Tex,我希望在轴上有粗体标签,以便可以使用绘图进行发布。我还需要将图例中线条的标签用粗体绘制。 到目前为止,我可以将轴标签和图例设置为我想要的大小和重量。我还可以将轴标签的大小设置为我想要的大小,但是我的重量不够 下面是一个示例代码: # plotting libs from pylab import * from matplotlib import rc if __name__=='__main__': tmpData = np.random.random( 100 ) # act
# 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轴上的效果不同(很抱歉,没有在原始问题中加入这一点,但我认为这不会改变事情):
现在我的结果如下所示:
这些更改似乎不会影响x轴记号标签的显示或重量。我认为问题在于记号是在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()
使用
谢谢汤姆,这至少有一点帮助。但是,由于我需要在x轴上使用日期,这些日期的显示方式与y轴不同。另请参见我更新/编辑的问题。我已找到解决方案。我需要做的是将进入
DateFormatter
的字符串格式化如下:ax.xaxis.set\u major\u格式化程序(dates.DateFormatter(r'\textbf{%m/%Y}'))
@red\u tiger:我想你应该接受答案。。日期格式是你一开始没有问过的。@George你说得对。答案很好,我找到了其余的答案。请不要只发布代码作为答案,还要解释代码的作用以及它是如何解决问题的。带有解释的答案通常更有帮助,质量更好,更容易吸引选票。使用列表理解只是为了循环混淆代码<代码>用于标签中的标签:label.set_fontwweight('bold')将使代码更清晰。非常感谢!伙伴
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()
plt.xticks(x, weight = 'bold')
labels = axes.get_xticklabels() + axes.get_yticklabels()
[label.set_fontweight('bold') for label in labels]