Интерполяция imshow применяется к обоим направлениям, но вы можете отфильтровать данные перед построением графика. Я добавил два новых возможных решения.

дал пустую эталонную матрицу из CSV, расположенную (x, y) как позицию на матрице (и распечатал ее), и назначил 100 для этой позиции на матрице. Каждый x - это значение в Серии ref_mass pandas.

ref_df = pd.read_csv(ref_file)
reference = np.zeros(shape=(1201,len(ref_df)))
ref_mass = ref_df["mass"]

for i, mass in enumerate(ref_mass):
  print ref_mass[i].astype(int) - 300, i # print (x,y)
  reference[(ref_mass[i].astype(int) - 300),i] = 100

Каждый (x, y) был распечатан правильно. Тем не менее, нет никакого значения в графике некоторых (х, у). Что здесь не так? Я проверил эталонную матрицу, она имеет 100 в каждом столбце правильно.

(Х, у):

547 0
265 1
124 2
39 3
509 4 # shown
240 5 # shown
105 6
24 7
355 8
137 9
28 10 # shown
394 11
163 12
48 13
347 14
132 15 # shown
24 16

Сюжет:

Код участка:

if __name__ == '__main__':
  from mpl_toolkits.mplot3d import Axes3D
  import matplotlib.pyplot as plt
  import matplotlib
  matplotlib.matplotlib_fname()

  plt.ylabel('m/z')
  plt.xlabel('Peptides')

  plt.imshow(reference, aspect='auto', cmap='terrain')
  plt.colorbar()
  plt.tight_layout()

  plt.show()

Ответы на вопрос(1)

Ваш ответ на вопрос