Интерполяция 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()