Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การจัดตำแหน่ง x-tick labels ให้อยู่ตรงกลางระหว่าง tick marks ใน Matplotlib


วางป้ายกำกับระหว่าง tick marks สองตัว

ขั้นตอนการวาง label ให้อยู่ตรงกลางระหว่าง tick marks:

  • โหลดข้อมูลตัวอย่าง r
  • สร้างสำเนาอาร์เรย์ แปลงชนิดข้อมูล
  • สร้าง figure และ subplots ด้วยเมธอด subplots()
  • วาดกราฟ date และ r
  • ตั้งค่า locator ของ major/minor ticker ด้วย set_major_locator() และ set_minor_locator()
  • ตั้งค่า formatter ของ major/minor ด้วย set_major_formatter() และ set_minor_formatter()
  • วาง tick label ให้อยู่ตรงกลาง
  • แสดงด้วย 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()

ผลลัพธ์

การจัดตำแหน่ง x-tick labels ให้อยู่ตรงกลางระหว่าง tick marks ใน Matplotlib