【发布时间】:2021-03-29 12:39:58
【问题描述】:
我正在尝试为 pyplot.imshow() 提供一个不一定是线性的值列表,以用作 y 轴标签。截断的列表是:
run_numbers = array([815676, 815766, 815767, 815768, 815769, 815770, 815771, 815772,
815773, 815774, 815775, 815776, 815777, 815778, 815779, 815780,
815781, 815783, 815784, 815785, 815786, 815789, 815790, 815792,
815793, 815794, 815795, 815796, 815797, 815798, 815799, 815800,
815801, 815802, 815803, 815804, 815805, 815806, 815807, 815808,
815809, 815811, 815812, 815813, 815814, 815815, 815816, 815817,
815818, 815819, 815820, 815821, 815822, 815823, 815824, 815825,
815826, 815827, 815829, 815830, 815831, 815832, 815833, 815834,
815835, 815836, 815837, 815838, 815839, 815841, 815842, 815843,
815844, 815845, 815846, 815847, 815848, 815849, 815851, 815852,
815853, 815854, 815855, 815856, 815857, 815858, 815859, 815860,
815861, 815863, 815864, 815865, 815866, 815867, 815869, 815870,
815871, 815872, 815873, 815874, 815875, 815876, 815877, 815878])
我的图片是这样的:
乍一看,这似乎很好。但是 imshow 没有使用列表中的值,而是使用从 815676 到列表最大值的线性范围。我尝试了一些不同的方法:
plt.imshow(np.array(profiles), aspect='auto', vmin=-5, vmax=20, extent=[0,500,max(run_numbers), min(run_numbers)])
上面的代码给出了上面的图像,考虑到我输入的范围,这是有道理的。
有没有办法告诉 imshow 使用列表中的值作为 yaxis 标签?我试过ax.yticklabels 和ax.ytick,但它们也给出了数字的线性级数而不是列表值。
如果有任何混淆,请告诉我如何澄清我的问题。如果我的问题不清楚,我也可以提供一个示例数据集。
【问题讨论】:
标签: python numpy matplotlib imshow