如何将xticks更改为0,10.00,20.00,30.00,40.00,50.00?如果它不是硬代码会很好,因为未来的数据可能不是5000。
我尝试创建用于标记x轴的xs数组,但结果轴具有所有值,而不是像之前的自动调整那样只有5。
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
# plot_result is numpy.ndarray of (8,5001)
plt.imshow(plot_result, aspect='auto')
xs = np.arange(0, 50.01, 0.01) # time
plt.imshow(plot_result, aspect='auto')
plt.xticks(range(len(xs)), xs)
答案 0 :(得分:0)
一种选择是实际设置图像的数据范围,使得第一个像素位于0
,最后一个像素位于50
。
可以使用imshow
的extent
参数完成此操作。
extent
:标量(左,右,下,上),可选,默认:无
数据坐标中左下角和右上角的位置。如果为None,则定位图像使得像素中心落在从零开始(行,列)的索引上。
为了保留显示为像素中间的数据点,需要进行一些小的计算。
import matplotlib.pyplot as plt
import numpy as np
z = np.random.rand(8,5001)
xmin = 0; xmax=50; dx=(xmax-xmin)/(z.shape[1]-1.)
ymin = 0; ymax=7; dy=(ymax-ymin)/(z.shape[0]-1.)
extent = [xmin-dx/2.,xmax+dx/2., ymin-dy/2.,ymax+dy/2. ]
plt.imshow(z, aspect='auto', extent=extent)
plt.show()