Как заставить ось Y использовать целые числа только в Matplotlib?
Я рисую гистограмму, используя модуль matplotlib.pyplot, и мне интересно, как я могу заставить метки оси y показывать только целые числа (например, 0, 1, 2, 3 и т.д.), а не десятичные числа (например, 0., 0.5, 1., 1.5, 2. и т.д.).
Я смотрю на заметки руководства и подозреваю, что ответ лежит где-то около matplotlib.pyplot.ylim, но пока я могу найти материал, который устанавливает минимальное и максимальное значение y значения.
def doMakeChart(item, x):
if len(x)==1:
return
filename = "C:\Users\me\maxbyte3\charts\\"
bins=logspace(0.1, 10, 100)
plt.hist(x, bins=bins, facecolor='green', alpha=0.75)
plt.gca().set_xscale("log")
plt.xlabel('Size (Bytes)')
plt.ylabel('Count')
plt.suptitle(r'Normal Distribution for Set of Files')
plt.title('Reference PUID: %s' % item)
plt.grid(True)
plt.savefig(filename + item + '.png')
plt.clf()
Ответы
Ответ 1
Если у вас есть y-datap >
y = [0., 0.5, 1., 1.5, 2., 2.5]
Вы можете использовать максимальные и минимальные значения этих данных для создания списка натуральных чисел в этом диапазоне. Например,
import math
print range(math.floor(min(y)), math.ceil(max(y))+1)
дает
[0, 1, 2, 3]
Затем вы можете установить метки галочки y (и метки) с помощью matplotlib.pyplot.yticks:
yint = range(min(y), math.ceil(max(y))+1)
matplotlib.pyplot.yticks(yint)
Ответ 2
Вот еще один способ:
from matplotlib.ticker import MaxNLocator
ax = plt.figure().gca()
ax.yaxis.set_major_locator(MaxNLocator(integer=True))
Ответ 3
это работает для меня:
import matplotlib.pyplot as plt
plt.hist(...
# make the y ticks integers, not floats
yint = []
locs, labels = plt.yticks()
for each in locs:
yint.append(int(each))
plt.yticks(yint)