你改数据没有用的
你把数据的横坐标改了,那变成x是1的时候有多个对应的y值
而如果你想把x=25显示成1
需要对控件本身进行重绘
或者你可以改变一下思路,x轴的类型不要用int
改为datetime类型
import numpy as np
from matplotlib import pyplot as plt
from matplotlib.ticker import FuncFormatter
from matplotlib.ticker import MultipleLocator
x = np.arange(15, 30)
y = np.square(x)
def func_x(x, pos):
return '%d'%(x%24)
fig = plt.figure()
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
ax.plot(x, y, c='r')
ax.xaxis.set_major_formatter(FuncFormatter(func_x))
ax.xaxis.set_major_locator(MultipleLocator(1))
plt.show()