цветовая карта из матрицы в python

#python #matplotlib

Вопрос:

У меня есть 2D-выходная матрица (скажем, Z), которая была рассчитана как функция двух переменных x,y.

x изменяется неравномерно, например [1e-5,5 e-5,1 e-4,5 e-4,1 e-3,5 e-3,1 e-2]

y изменяется одинаковым образом, например [300,400,500,600,700,800]

[ скажем, Z = np.random.ранд(7,6) ]

Я пытался построить цветовую карту матрицы Z, сначала создав сетку для x,y, а затем используя pcolormesh. Поскольку мои значения x неоднородны, я не знаю, как действовать дальше. Мы будем очень признательны за любой вклад.

Ответ №1:

Нет необходимости в сетчатых сетках; что касается неоднородных осей: В вашем случае логарифмическая шкала работает нормально:

 import numpy as np
from matplotlib import pyplot as plt

x = [1e-5,5e-5,1e-4,5e-4,1e-3,5e-3,1e-2]
y = [300,400,500,600,700,800]

# either enlarge x and y by one number (right-most
# endpoint for those bins), or make Z smaller as I did
Z = np.random.rand(6,5)

fig = plt.figure()
ax = fig.gca()

ax.pcolormesh(x,y,Z.T)
ax.set_xscale("log")
fig.show()
 

Комментарии:

1. Спасибо! Могу я узнать, зачем нам нужно транспонировать Z-матрицу ?

2. Конечно; это соглашение связано с тем,что в математике матрицы индексируются способом y, x, т. Е. (1,5) — это первая строка, пятый столбец.