首页 > 解决方案 > matplotlib:自定义月份名称(用于在语言环境不起作用时进行翻译)

问题描述

我正在寻找一种方法来重命名图中打印的月份,即将每个月映射到自定义标签。我需要我的绘图使用系统中未安装的语言,所以我想手动设置名称。如果我尝试 locale.setlocale(locale.LC_TIME, 'pt_BR.UTF-8'),我会得到Error: unsupported locale setting

标签: pythondatetimematplotlib

解决方案


成分

  • FuncFormatter
  • num2date

方法

from datetime import datetime, timedelta
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from matplotlib.dates import num2date
from matplotlib.ticker import FuncFormatter

months_names = [None, 'Jan', 'Fev', 'Mar','Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez']

# Generate some random date-time data
numdays = 500
base = datetime.today()
date_list = [base - timedelta(days=x) for x in range(0, numdays)]
y = np.random.rand(numdays)

# Set the locator
locator = mdates.MonthLocator(bymonth=(1, 4))  # every January and April

plt.scatter(date_list,y)
X = plt.gca().xaxis
X.set_major_locator(locator)
X.set_major_formatter(FuncFormatter(lambda x, i: months_names[num2date(x).month]))
plt.show()

输出

在此处输入图像描述


推荐阅读