Имам приложение за контурно начертаване, което бих искал да знам местоположението на пикселите на началото на осите. Прочетох Урок за трансформация, но не изглежда, че работи правилно.
Ето кода, адаптиран от програмата Contour Demo:
#!/usr/bin/env python
"""
Illustrate simple contour plotting, contours on an image with
a colorbar for the contours, and labelled contours.
See also contour_image.py.
"""
import matplotlib
matplotlib.use('Agg')
import numpy as np
import matplotlib.cm as cm
import matplotlib.mlab as mlab
import matplotlib.pyplot as plt
matplotlib.rcParams['xtick.direction'] = 'out'
matplotlib.rcParams['ytick.direction'] = 'out'
delta = 0.025
x = np.arange(-3.0, 3.0, delta)
y = np.arange(-2.0, 2.0, delta)
X, Y = np.meshgrid(x, y)
Z1 = mlab.bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0)
Z2 = mlab.bivariate_normal(X, Y, 1.5, 0.5, 1, 1)
# difference of Gaussians
Z = 10.0 * (Z2 - Z1)
# Create a simple contour plot with labels using default colors. The
# inline argument to clabel will control whether the labels are draw
# over the line segments of the contour, removing the lines beneath
# the label
plt.figure()
CS = plt.contour(X, Y, Z)
plt.clabel(CS, inline=1, fontsize=10)
plt.title('Simplest default with labels')
print "Origin:\t", plt.gca().transData.transform((-3.0, -2.0))
plt.savefig("cdemo.png")
Резултатът е: Произход: [ 80. 48.]
Въпреки това, когато гледам това с редактор, който показва позицията на курсора в пиксели (GIMP), той показва местоположението на произхода като (100 540). Разбирам, че произходът на Matplotlib е долу вляво, а GIMP брои от горния ляв ъгъл, така че коригирайки това с размера на изображението от (800, 600), което ми дава преведено местоположение от (100,60).
Някакви идеи? Ето изображението с приблизителното местоположение на (80, 48), маркирано в червено долу вляво.
Използване на matplotlib 1.4.3 Благодаря!