python - matplotlib 使日期的轴刻度标签变为粗体

标签 python matplotlib tex

我想在我的坐标轴上使用粗体标签,这样我就可以使用该图进行发布。我还需要以粗体绘制图例中的线条标签。 到目前为止,我可以将轴标签和图例设置为我想要的大小和重量。我还可以将轴标签的大小设置为我想要的大小,但是我的权重失败了。

这是一个示例代码:

# 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

知道为了让轴刻度标签以粗体显示我遗漏了什么或做错了什么吗?

编辑

我已经使用 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()

现在我的结果是这样的:

updated figure

似乎这些更改不会影响显示或 x 轴刻度标签的权重。

最佳答案

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

您可以通过使用 rcParams 将正确的命令添加到 LaTeX 序言来解决这个问题。具体来说,您需要使用\boldmath 获得正确的粗细,并使用\usepackage{sfmath} 获得无衬线字体。

此外,您可以使用 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()

关于python - matplotlib 使日期的轴刻度标签变为粗体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29766827/

相关文章:

python - 编辑 Seaborn 热图上轴刻度的标签和位置会导致空图

c++ - 非均匀采样的CUDA重采样

python - 仅打印奇数字典键及其项

python - 如何从Docker中运行的应用程序连接弹性集群

python - 如何在每个循环中更改图形的 xlabel

python-3.x - matplotlib 中的平滑贝塞尔曲线等效绘图

python - 根据项目中的值从列表中提取位置

python - 为 Python 安装 PyObjC 的问题

Vim - 如何使用 autocmd 和模板文件在新文件的行首插入反斜杠

c# - 如何为 TEX 创建解析器?