Я строю фигуру с matplotlib
, которая включает в себя как растровые изображения, нарисованные plt.imshow
, так и другие графические объекты, такие как линейные графики.
Для линейных графиков, когда я устанавливаю clip_on
в False
, объекты выходят за пределы осей. Однако для imshow
эта настройка, похоже, ничего не делает. Например, посмотрите, как логотип matplotlib обрезается в следующем примере. Как отключить отсечение растрового изображения, чтобы логотип matplotlib выходил за пределы осей?
Использование OffsetImage
и AnnotationBbox
вместо imshow
позволяет размещать изображения вне осей, но имеет другие ограничения (Вв частности, размер / экстент указывается как произвольный коэффициент увеличения, а не как координаты данных.
![clipping issue example](https://i.stack.imgur.com/uE0mk.png)
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.cbook import get_sample_data
fig = plt.figure(figsize=(10,5))
ax = plt.subplot(111)
plt.subplots_adjust(left=0.25, bottom=0.1, right=0.75, top=0.9, wspace=0, hspace=0)
# plot a line. When clip_on is set to False, the line is extended beyond the axes
ax.plot(np.linspace(0,2),np.sin(np.linspace(0,2)),clip_on=False)
plt.xlim([0,1])
plt.ylim([0,1])
# plot a bitmap. Although clip_on is set to False, it is clipped by the axes
logo = plt.imread(get_sample_data("logo2.png", asfileobj=False))
left,right, bottom, top=0.25,0.25+1.12,0.25,0.25+0.24
ax.imshow(X=logo,extent=(left, right, bottom, top),clip_on=False)
Версия Matplotlib: 3.1. 1, бэкэнд: Qt5Agg