我有一个二维数组,表示给定参数A和B的过程效率。参数A沿着列周期性变化,从0到225,增量为1。问题出在参数按以下顺序变化的行:
[16 ,18 ,20 ,21 ,22 ,23 ,24 ,25 ,26 ,27 ,28 ,29 ,30 ,31 ,32 ,33 ,35 ,40 ,45 ,50 ,55 ,60 ,65 ,70 ,75 ,80 ,85 ,90 ,95 ,100 ,105 ,110 ,115 ,120 ,125]
因此,即使行以增量1增加,它们也表示参数B的非均匀增量。我需要在y轴上展示参数B的值。使用axes.set_yticks()
并不能给予我所寻找的结果,我确实理解其中的原因,但不知道如何求解。
举个最小的例子:
# Define parameter B values
parb_increment = [16, 18, 20] + list(range(21,34)) + list(range(35,126,5))
print(len(parb_increment))
print(x.shape)
# Figure and axes
figure, axes = plt.subplots(figsize=(10, 8))
# Plotting
im = axes.imshow(x, aspect='auto',
origin="lower",
cmap='Blues',
interpolation='none',
extent=(0, x.shape[1], 0, parb_increment[-1]))
# Unsuccessful trial for yticks
axes.set_yticks(parb_increment, labels=parb_increment)
# Colorbar
cb = figure.colorbar(im, ax=axes)
前面的代码给出了下面的图和输出,您可以看到刻度不仅放错了位置,而且从不正确的位置开始。
35
(35, 225)
1条答案
按热度按时间rdrgkggo1#
控制每个像素的宽度/高度的项是
aspect
。不幸的是,你不能使它可变。即使你修改/更新y轴刻度,aspect
也不会改变。这就是为什么在你的例子中,刻度与像素行没有对齐。因此,您的问题的解决方案是复制那些非均匀递增的行。
参见以下示例:
这将复制您的问题并生成following outcome。
首先,确定数组中每行的重复次数:
您需要颠倒顺序,因为图像中的顶行是数组中的第一行,
y_increments
提供从数组中最后一行开始的各行之间的差值。现在,您可以将数组中的每一行重复特定的次数:
使用
x_extended
重新绘制:你也该试试。