Duarte José Pereira de Sousa wrote:

> I'm having problems when formatting the current density map of a system.
> First, the colorbar doesn't appear even when colobar = True in the
> arguments of kwant.plotter.current.

Duarte, thanks for reporting this problem.  I have fixed it for the
(yet unreleased) maintenance branch of Kwant 1.3 [1].

For now, you can work around the problem as follows.  Replace

    kwant.plotter.current(...)

with

    kwant.plotter.current(..., show=False)

followed by the cryptic

    from matplotlib import pyplot
    ax = pyplot.gca()
    pyplot.colorbar(ax.get_children()[-2], ax=ax)
    pyplot.show()

That should make the colorbar appear.  Of course, you can also use the
current Kwant "stable" branch from git where the problem is fixed.

> The other problem is related to the line color of the vectorial
> field. It seems that the program chooses the color corresponding to
> the intensities of the chosen color palette in each region of the map,
> even when the argument linecolor = 'certain color' is selected. For
> example, if I select cmap = 'jet', linecolor = 'black' in the
> arguments of kwant.plotter.current, the colors of the arrows will
> change from region to region according to the colors of the pallete
> instead of being black throughout the map.

Well observed!  This behavior is intentional.  Common matplotlib
backends (like PDF) do not support arbitrarily thin lines, their minimum
line width is 1.  However, we want to be able to show arbitrarily thin
lines, otherwise regions without current would be full of arrows
(because of the numerically calculated current density is never quite
zero).

In order to work around this problem, for lines that should be thinner
than 1, we keep the width at 1 and instead fade their color into the
background color.  We are very careful to do this in the perceptually
correct way.  (See function kwant.plotter._linear_cmap if you are
interested.)  From a certain viewing distance such "fake" thin lines
look the same as "real" thin lines.

If you still think that real solid lines would be useful, could you
please explain why?  If you are satisfied with my explaination, do you
think that it should be added to the function's documentation?

Cheers,
Christoph

[1] 
https://gitlab.kwant-project.org/kwant/kwant/commit/d16b3dfd31f4c5ae76c42fc46fc99ba49cb7e9e3

Attachment: signature.asc
Description: PGP signature

Reply via email to