Я хочу сделать markersize
равным одной единице высоты. Кажется, что markersize
в пикселях. Как я могу узнать, насколько велика «1 единица» (вдоль заданной оси) в пикселях?
Как я могу получить длину одной единицы на оси в matplotlib в пикселях?
comment
Подобно, но не дубликат: stackoverflow.com/questions/5893513/ вы можете найти это полезным.
- person Alex   schedule 25.01.2012
Ответы (1)
Взгляните на руководство по преобразованиям (вау, пришлось долго копаться, чтобы найти - - !)
В частности, axes.transData.transform(points)
возвращает координаты в пикселях, где (0,0) — левый нижний угол области просмотра.
import matplotlib.pyplot as plt
# set up a figure
fig = plt.figure()
ax = fig.add_subplot(111)
x = np.arange(0, 10, 0.005)
y = np.exp(-x/2.) * np.sin(2*np.pi*x)
ax.plot(x,y)
# what's one vertical unit & one horizontal unit in pixels?
ax.transData.transform([(0,1),(1,0)])-ax.transData.transform((0,0))
# Returns:
# array([[ 0., 384.], <-- one y unit is 384 pixels (on my computer)
# [ 496., 0.]]) <-- one x unit is 496 pixels.
Существуют различные другие преобразования, которые вы можете выполнять — координаты относительно ваших данных, относительно осей, как доля фигуры или в пикселях для фигуры (учебник по преобразованиям действительно хорош).
ЧТОБЫ преобразовать пиксели в пункты (пункт равен 1/72 дюйма), вы можете поиграть с matplotlib.transforms.ScaledTransform
и fig.dpi_scale_trans
(в учебнике есть кое-что по этому поводу, я думать).
person
mathematical.coffee
schedule
25.01.2012