Матрица матрица матрицы Matplotlib как индекс 0

Я готовлю матрицу numpy, затем используйте matplotlib для построения матрицы, например:

>>> import numpy >>> import matplotlib.pylab as plt >>> m = [[0.0, 1.47, 2.43, 3.44, 1.08, 2.83, 1.08, 2.13, 2.11, 3.7], [1.47, 0.0, 1.5, 2.39, 2.11, 2.4, 2.11, 1.1, 1.1, 3.21], [2.43, 1.5, 0.0, 1.22, 2.69, 1.33, 3.39, 2.15, 2.12, 1.87], [3.44, 2.39, 1.22, 0.0, 3.45, 2.22, 4.34, 2.54, 3.04, 2.28], [1.08, 2.11, 2.69, 3.45, 0.0, 3.13, 1.76, 2.46, 3.02, 3.85], [2.83, 2.4, 1.33, 2.22, 3.13, 0.0, 3.83, 3.32, 2.73, 0.95], [1.08, 2.11, 3.39, 4.34, 1.76, 3.83, 0.0, 2.47, 2.44, 4.74], [2.13, 1.1, 2.15, 2.54, 2.46, 3.32, 2.47, 0.0, 1.78, 4.01], [2.11, 1.1, 2.12, 3.04, 3.02, 2.73, 2.44, 1.78, 0.0, 3.57], [3.7, 3.21, 1.87, 2.28, 3.85, 0.95, 4.74, 4.01, 3.57, 0.0]] >>> matrix = numpy.matrix(m) >>> matrix matrix([ [ 0. , 1.47, 2.43, 3.44, 1.08, 2.83, 1.08, 2.13, 2.11, 3.7 ], [ 1.47, 0. , 1.5 , 2.39, 2.11, 2.4 , 2.11, 1.1 , 1.1 , 3.21], [ 2.43, 1.5 , 0. , 1.22, 2.69, 1.33, 3.39, 2.15, 2.12, 1.87], [ 3.44, 2.39, 1.22, 0. , 3.45, 2.22, 4.34, 2.54, 3.04, 2.28], [ 1.08, 2.11, 2.69, 3.45, 0. , 3.13, 1.76, 2.46, 3.02, 3.85], [ 2.83, 2.4 , 1.33, 2.22, 3.13, 0. , 3.83, 3.32, 2.73, 0.95], [ 1.08, 2.11, 3.39, 4.34, 1.76, 3.83, 0. , 2.47, 2.44, 4.74], [ 2.13, 1.1 , 2.15, 2.54, 2.46, 3.32, 2.47, 0. , 1.78, 4.01], [ 2.11, 1.1 , 2.12, 3.04, 3.02, 2.73, 2.44, 1.78, 0. , 3.57], [ 3.7 , 3.21, 1.87, 2.28, 3.85, 0.95, 4.74, 4.01, 3.57, 0. ] ]) >>> fig = plt.figure() >>> ax = fig.add_subplot(1,1,1) >>> ax.set_aspect('equal') >>> plt.imshow(matrix, interpolation='nearest', cmap=plt.cm.ocean) >>> plt.colorbar() >>> plt.show() 

Сюжет выглядит следующим образом:

введите описание изображения здесь

Это прекрасно, за исключением того факта, что я хотел бы, чтобы мои оси перемещались от 1 до 10, а не от 0 до 9 (из индексирования индекса python)

Есть ли простой способ сделать это?

Большое спасибо!!

  • Как очистить динамические веб-страницы от Python
  • Могу ли я установить Python 3.x и 2.x на тот же компьютер?
  • Ошибка в Python IOError: Нет такого файла или каталога: 'data.csv'
  • Python: печатать переменную в шестнадцатеричном формате
  • «Большие данные» работают с использованием панд
  • Python: Collections.Counter vs defaultdict (int)
  • Объединение двух объектов JSON в один
  • Как изменить ось x в matplotlib, чтобы не было пробела?
  • 2 Solutions collect form web for “Матрица матрица матрицы Matplotlib как индекс 0”

    Вы можете использовать дополнительный параметр extent к функции plt.imshow() , которая здесь документирована. Как это:

     #All the stuff earlier in the program plt.imshow(matrix, interpolation='nearest', cmap=plt.cm.ocean, extent=(0.5,10.5,0.5,10.5)) plt.colorbar() plt.show() 

    Для матрицы с произвольной формой вы можете изменить этот код примерно так:

     #All the stuff earlier in the program plt.imshow(matrix, interpolation='nearest', cmap=plt.cm.ocean, extent=(0.5,numpy.shape(matrix)[0]+0.5,0.5,numpy.shape(matrix)[1]+0.5)) plt.colorbar() plt.show() 

    Это создает сюжет, который выглядит так:

    Выход графика

    Чтобы получить желаемый результат, добавьте эти строки после кода, но перед plt.show() :

     ... labels = [0, 1, 3, 5, 7, 9] ax.set_xticklabels(labels) plt.show() 

    Заметим, что ось x и ось y находятся в диапазоне [-0.5, 9.5] не int [0, 9]

    Редактировать:

    Чтобы сделать это более гибким способом (на самом деле, еще один способ показанного выше):

     labels = range(0, len(m[0])) plt.xticks(labels) plt.show() 

    Вывод:

    введите описание изображения здесь

    Python - лучший язык программирования в мире.