Как я могу предотвратить отображение Matlab десятичных лет по горизонтальной оси?

1
import matplotlib.pyplot as plt
import matplotlib.path as mpath
import numpy as np

# Data for plotting
t = [2013, 2014, 2015, 2016, 2017]
s = [12.92, 14.19, 15.39, 15.72, 16.03]

fig, ax = plt.subplots()
ax.plot(t, s, 'o', markersize=15)
ax.set(xlabel='year', ylabel='Revenue (billion dollars)',
       title='Revenue Growth')
fig.savefig("test.png")
plt.show()

Вывод здесь, но горизонтальная ось представляет год; как я могу остановить его показ десятичных лет?

Изображение 174551

  • 0
    Проще всего в случае наличия всех последовательных лет сделать их категориями. t = np.array(t).astype(str) . В противном случае вы можете установить метки и метки через ax.set_xticks(t); ax.set_xticklabels(t) . В общем, решение будет заключаться в использовании локатора (например, MultipleLocator(1) и форматера (например, StrMethodFormatter ). Наконец, вы можете преобразовать ваш t в datetimes .
Теги:
matplotlib

2 ответа

1
Лучший ответ

Возможное решение - преобразовать ваш массив в массив numpy и передать его в виде строки:

ax.plot(np.asarray(t).astype(str), s, 'o', markersize=15)
0
 from matplotlib.ticker import FormatStrFormatter

 fig, ax = plt.subplots()
 ax.xaxis.set_major_formatter(FormatStrFormatter('%d'))
  • 0
    В этом случае вам также понадобится локатор. (Я перечислил все варианты в своем комментарии под вопросом.)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню