在matplotlib中从定义的范围调整x-ticks

时间:2017-04-21 08:43:18

标签: python matplotlib

如何将xticks更改为0,10.00,20.00,30.00,40.00,50.00?如果它不是硬代码会很好,因为未来的数据可能不是5000。 enter image description here

我尝试创建用于标记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)

1 个答案:

答案 0 :(得分:0)

一种选择是实际设置图像的数据范围,使得第一个像素位于0,最后一个像素位于50

可以使用imshowextent参数完成此操作。

  

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()

enter image description here