Нелинейные оси для imshow в matplotlib

Я генерирую двумерные массивы на осях с логарифмическими координатами (например, координаты x пикселей создаются с использованиемlogspace(log10(0.95), log10(2.08), n).

Я хочу отобразить изображение с помощью простого старого imshow с его собственным разрешением и масштабированием (мне это не нужно)растянуть это; сами данные уже масштабируются в журнале), но я хочу добавить галочки, метки, линии, которые находятся в правильном месте на осях журнала. Как мне это сделать?

В идеале я мог бы просто использовать командную строкуaxvline(1.5) и линия была бы в правильном месте (58% слева), но если единственный способ - это вручную переводить координаты масштаба шкалы и координаты изображения, это тоже нормально.

Для линейных осей, используяextents= в вызове imshow делает то, что я хочу, но я не вижу способа сделать то же самое с осью журнала.

Пример:

from matplotlib.colors import LogNorm

x = logspace(log10(10), log10(1000), 5)
imshow(vstack((x,x)), extent=[10, 1000, 0, 100], cmap='gray', norm=LogNorm(), interpolation='nearest')
axvline(100, color='red')

Этот пример не работает, потому что экстент = применяется только к линейным масштабам, поэтому, когда вы делаете axvline на 100, он не появляется в центре. Мне бы хотелось, чтобы ось х показала 10, 100, 1000 иaxvline(100) поставить линию в центре в точке 100, в то время как пиксели остаются на одинаковом расстоянии.

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

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