
Dear Lorenzo, Of course there is. It is straightforward, thanks to Kwant. To do so you need two functions to be defined. 1- you have to define the onsite as a function. 2- you have to define a family_color function which has to depend on the onsite function. 3-Active family_color in kwant.plot(). To make this simple to you, kindly see the following examples (p-n-junction) best, Adel import kwant import numpy as np from math import sqrt import matplotlib.pyplot as plt from types import SimpleNamespace from ipywidgets import interact from mpl_toolkits import mplot3d import warnings warnings.filterwarnings('ignore') def onsite_1(site): x,y = site.pos if x>0: return 5 else: return 0 ### --------- Onsite------- def family_color_1(site): x,y = site.pos return onsite_1(site) def onsite_2(site): x,y = site.pos if abs(x)<4: return 5 elif x>4: return 2.5 else: return 0 ### --------- Onsite------- def family_color_2(site): x,y = site.pos return onsite_2(site) lat = kwant.lattice.honeycomb(a=1, norbs=1, name=["a", "b"]) a, b =lat.sublattices def rect(pos): x, y = pos return abs(x) < 10 and abs(y) < 5 sys1=kwant.Builder() sys1[lat.shape(rect, (1, 1))] = onsite_1 sys1[lat.neighbors(1)] = -1 sys2=kwant.Builder() sys2[lat.shape(rect, (1, 1))] = onsite_2 sys2[lat.neighbors(1)] = -1 kwant.plot(sys1, site_color=family_color_1, site_size=None, cmap='jet', colorbar=True,) plt.show() kwant.plot(sys2, site_color=family_color_2, site_size=None, cmap='jet', colorbar=True,) plt.show() Le mar. 17 mai 2022 à 11:22, Lorenzo BAGNASACCO <lorenzo.bagnasacco@sns.it> a écrit :
Dear Kwant community,
I am a physics student and I am approaching to Kwant to solve simple problems of scattering. For example, I created a 2D discrete potential. The potential has two different values: "V0" and "0". When I plot the system, using the command "kwant.plot(syst)", I obtain the plot with only light-blue colour. There is a command to plot the discrete potential with two (or more) different colours (in my case one colour for "V0", and another one for "0")?
Yours Sincerely
Lorenzo Bagnasacco