2015-04-21 187 views
4

我想在我的坐标轴上有粗体标签,因此可以使用绘图进行发布。我还需要将图例中的线条标记为粗体。 到目前为止,我可以将轴标签和图例设置为我想要的尺寸和重量。我还可以将轴标签的大小设置为我想要的大小,但是我无法承受重量。matplotlib使日期加粗的轴刻度标签

下面是一个例子代码:

# 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() 

而这就是我得到:

plot example

任何想法,我缺少或者为了获得轴做错了蜱标签粗体?

编辑

我一直在使用汤姆斯响应更新我的代码。但是现在我又遇到了另一个问题,因为我需要在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() 

现在我的结果是这样的:

updated figure

这似乎是变化母鹿不影响x轴的显示或相当的重量蜱标签。

回答

5

我认为这个问题是因为蜱是在LaTeX数学模式下制作的,所以字体属性不适用。

您可以通过使用rcParams将正确的命令添加到LaTeX序言中来解决此问题。具体而言,您需要使用\ boldmath来获取正确的wieght,并使用\ usepackage {sfmath}来获取sans-serif字体。

此外,您可以使用set_tick_params设置刻度标签的字体大小。 enter image description here

下面是一些代码,你想要做什么:

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() 
+0

感谢汤姆,这会有所帮助,至少有一点。然而,因为我需要在我的x轴上使用日期,所以这些显示的方式与y轴的显示方式不同。另见我更新/编辑的问题。 –

+1

我找到了解决方案。我需要做的是格式化进入'DateFormatter'的字符串,如下所示: 'ax.xaxis.set_major_formatter(dates.DateFormatter(r'\ textbf {%m /%Y}'))' –

+1

@red_tiger:我认为你应该接受答案..日期格式是你首先不问的东西。 – George

相关问题