Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为imshow提供yaxis标签的自定义列表_Python_Numpy_Matplotlib_Imshow - Fatal编程技术网

Python 为imshow提供yaxis标签的自定义列表

Python 为imshow提供yaxis标签的自定义列表,python,numpy,matplotlib,imshow,Python,Numpy,Matplotlib,Imshow,我试图为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, 8

我试图为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=[0500,max(运行编号),min(运行编号)])

上面的代码给出了上面的图像,考虑到我在范围中的内容,这是有意义的

有没有办法告诉imshow使用列表中的值作为yaxis标签?我尝试了
ax.yticklabels
ax.ytick
,但它们也给出了数字的线性级数,而不是列表值


如果有任何疑问,请告诉我如何澄清我的问题。如果我的问题不清楚,我还可以提供一个示例数据集。

让范围介于0和标签数减1之间,然后使用
plt。yticks(范围(N),运行编号)
将设置标签。由于大约有100个标签,这看起来非常拥挤,可以通过设置大数字和小字体来缓解。或者,标签可以每隔一步设置,例如步骤10:

将numpy导入为np
将matplotlib.pyplot作为plt导入
运行\u numbers=np.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])
N=长度(运行编号)
profiles=np.random.randn(N,501.cumsum)(轴=1)
plt.imshow(profiles,aspect='auto',extent=[0500,N-1,0])
plt.yticks(范围(0,N,10),运行编号[::10])
plt.show()

plt.图(figsize=(10,16))
plt.imshow(profiles,aspect='auto',extent=[0500,N-1,0])
plt.yticks(范围(N),运行编号,fontsize=8)
可能看起来像


这太完美了,谢谢!