numpy Python imshow(matplotlib)的自定义刻度线

ikfrs5lh  于 2023-08-05  发布在  Python
关注(0)|答案(2)|浏览(156)

我想将自定义刻度线添加到以下plt.imshow()图中(见下文):

import numpy as np
import matplotlib.pyplot as plt

zmm = np.linspace(0,121,121).reshape(11,11)
plt.imshow(zmm, cmap = 'Blues')
plt.show()

字符串


的数据
我尝试添加我需要的自定义刻度线:

xticks = np.linspace(6.5,7.5,6)
yticks = np.linspace(.14,.18,6)

plt.imshow(zmm, cmap = 'Blues')
plt.xticks(xticks)
plt.show()


下图显示了结果(同时尝试x和yticks会产生更差的结果)。我不能用这个reference来解决这个问题。


643ylb08

643ylb081#

IIUC,您希望使用xticksyticks的值重新标记刻度(0..10)。了解 tick(位置)和 label(文本)之间的区别很重要。去看医生。
在您的情况下,刻度将保持在相同的位置,而只有标签会改变:

import numpy as np
import matplotlib.pyplot as plt

zmm = np.linspace(0,121,121).reshape(11,11)
plt.imshow(zmm, cmap = 'Blues')

nb_ticks = 6

xticks = np.linspace(6.5, 7.5, nb_ticks)
yticks = np.linspace(.14, .18, nb_ticks)

new_xticks = np.linspace(0, 10, nb_ticks)
new_yticks = np.linspace(0, 10, nb_ticks)

plt.xticks(new_xticks, labels=xticks)
plt.yticks(new_yticks, labels=yticks)

plt.show()

字符串
输出量:


的数据

6ss1mwsb

6ss1mwsb2#

或者,如果这实际上不是一个图像,您可能需要考虑使用pcolormesh,它接受xy值,这些值用于确定刻度。imshow使用与数组中的索引对应的刻度(如果不传递x和y点,pcolormesh也会这样做)。为了使代码正常工作,我更改了xticksyticks中的点数,因为刻度数和行/列数(取决于x或y)需要一一对应。
另外,请注意,pcolormesh不像imshow那样默认为方形图,因此添加了一条线使其成为方形。

import numpy as np
import matplotlib.pyplot as plt

xticks = np.linspace(6.5, 7.5, 11)
yticks = np.linspace(0.14, 0.18, 11)

zmm = np.linspace(0, 121, 121).reshape(11, 11)
plt.pcolormesh(xticks, yticks, zmm, cmap='Blues')
plt.gca().set_box_aspect(1)
plt.show()

字符串
x1c 0d1x的数据
您还将注意到,pcolormesh将原点放置在左下角(像典型的图形一样),而不是imshow将原点放置在左上角。

相关问题