Q: - ... "Можно использовать любой класс, реализующий интерфейс?" A: - Да.
Q: -... «Когда вам это нужно?» A: - Каждый раз, когда вам нужен класс (ы), который реализует интерфейс (ы).
blockquote>Примечание: мы не смогли создать интерфейс, не реализованный классом - Правда.
- почему?
- , потому что интерфейс имеет только прототипы методов, а не определения (просто имена функций, а не их логика)
AnIntf anInst = new Aclass (); // мы могли бы сделать это, только если Aclass реализует AnIntf. // anInst будет иметь ссылку на Aclass.
blockquote>Примечание: Теперь мы могли бы понять что происходит, если Bclass и Cclass реализуют один и тот же Dintf.
Dintf bInst = new Bclass(); // now we could call all Dintf functions implemented (defined) in Bclass. Dintf cInst = new Cclass(); // now we could call all Dintf functions implemented (defined) in Cclass.
Что мы имеем: те же интерфейсные прототипы (имена функций в интерфейсе) и вызываем разные реализации.
Библиография: Прототипы - википедия
Вы можете сделать это с помощью pcolormesh
и затем установить alpha
для граней QuadMesh
. Например:
import numpy as np
import matplotlib.pyplot as plt
fig,ax = plt.subplots(1)
ax.set_aspect('equal')
# The data array
m1 = np.random.rand(5,5)
# The alpha array. Normalize your map2 to the range 0,1
m2 = np.linspace(0,1,25).reshape(5,5)
p = ax.pcolormesh(m1)
plt.savefig('myfig.png') # or fig.canvas.draw()
for i,j in zip(p.get_facecolors(),m2.flatten()):
i[3] = j # Set the alpha value of the RGBA tuple using m2
plt.savefig('myfig.png')
Примечание: вам кажется, вам нужно сохранить фигуру (или plt.show()
или fig.canvas.draw()
) после команды pcolormesh, чтобы сгенерировать массив p.get_facecolors
; вот почему я дважды сохраняю фигуру. Возможно, это более элегантное решение, но я не могу думать об этом с головы. Вот результат; обратите внимание на увеличение alpha
от нижнего левого угла к верхнему праву: