#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) — это первая строка, пятый столбец.