Вот
ей проблемой являются нежелательные белые линии междуmatplotlib
объекты, нарисованные сPatch
, а такжеpcolor
, pcolormesh
(увидетьcontourf
эта тема для первых двух иэта тема для последнего).Я попытался исправить это автоматически, добавив
новые методы к моему экземпляры класса / подкласса, использующиеAxes
, я сделаю этоMethodType
вместо подклассов просто потому, что я хочу генерировать передавая кусочкиAxes
возражает противGridSpec
метод наadd_subplot
экземпляр, и яFigure
не знают о том, как я мог бы сделать это с каким-то подклассом (но я приветствую совет). Вот пример кода ...matplotlib.axes.Subplot
В последней строке я бы предпочел уметь писать
from types import MethodType
import matplotlib.pyplot as plt
from matplotlib.gridspec import GridSpec
f = plt.figure()
gs = GridSpec(2,1)
ax = f.add_subplot(gs[0,0])
def _pcolormesh(self, *args, **kwargs):
p = self.pcolormesh(*args, **kwargs)
p.set_edgecolor('face')
p.set_linewidth(0.2) # will cover white lines, without making dot in corner of each square visible
return p
def _contourf(self, *args, **kwargs):
c = self.contourf(*args, **kwargs)
for _ in c.collections:
_.set_edgecolor('face')
return c
ax.mypcolormesh = MethodType(_pcolormesh, ax)
ax.mycontourf = MethodType(_contourf, ax)
вместоax.pcolormesh
, но это поднимает ax.mypcolormesh
так какRecursionError
вызывает оригинальное имя метода ... который теперь является псевдонимом для себя._pcolormesh
Итак, как я могу получить доступ к методу на этом
Например, переопределить его и сохранить исходное имя?Axes
Таким образом, исправление исходной проблемы состоит из 2 строк, и чтобы сделать это «проще», вы добавляете 6 строк ?! Кажется, не имеет большого смысла для меня.