在 Matplotlib 中绘制 x 刻度线标记与刻度标记间的居中
若要在两个刻度之间放置标记,我们可以采取以下步骤:
- 加载一些样本数据,r。
- 创建数组的副本,转换为指定类型。
- 使用 **subplots()** 方法创建一个 figure 和一组子图。
- 绘制日期和 r 样本数据。
- 使用 **set_major_locator()** 和 **set_minor_locator()** 方法设置主刻度和次刻度的定位器。
- 使用 **set_major_locator()** 和 **set_minor_formatter()** 方法设置主格式化器和次格式化器的定位器。
- 现在,将刻度标记放置在中心。
- 若要显示 figure,使用 **show()** 方法。
示例
import numpy as np import matplotlib.cbook as cbook import matplotlib.dates as dates import matplotlib.ticker as ticker import matplotlib.pyplot as plt plt.rcParams["figure.figsize"] = [7.00, 3.50] plt.rcParams["figure.autolayout"] = True with cbook.get_sample_data('aapl.npz') as fh: r = np.load(fh)['price_data'].view(np.recarray) r = r[-250:] date = r.date.astype('O') fig, ax = plt.subplots() ax.plot(date, r.adj_close) ax.xaxis.set_major_locator(dates.MonthLocator()) ax.xaxis.set_minor_locator(dates.MonthLocator(bymonthday=15)) ax.xaxis.set_major_formatter(ticker.NullFormatter()) ax.xaxis.set_minor_formatter(dates.DateFormatter('%b')) for tick in ax.xaxis.get_minor_ticks(): tick.tick1line.set_markersize(0) tick.tick2line.set_markersize(0) tick.label1.set_horizontalalignment('center') imid = len(r) // 2 ax.set_xlabel(str(date[imid].year)) plt.show()
输出
广告