Examples#
The examples for QtDraw.
load from files#
#
# load.py
#
import os
from qtdraw.core.qtdraw_app import QtDraw
files = ["sample.qtdw", "sample_ver1.qtdw", "icon.qtdw", "color_pattern.qtdw", "helimag.qtdw", "Si.cif", "Si.vesta", "Si.xsf"]
os.chdir(os.path.dirname(__file__))
for f in files:
app = QtDraw(f)
app.exec()
from Jupyter Notebook#
background plot#
#
# background.py
#
import numpy as np
from qtdraw.util.qt_event_util import get_qt_application
from qtdraw.core.pyvista_widget import PyVistaWidget
filename = "output.qtdw" # output file name.
# create widget.
app = get_qt_application()
widget = PyVistaWidget(off_screen=True)
widget.set_cell("off") # cell off.
# add objects.
for i in range(32):
x = np.cos(i * np.pi / 8)
y = np.sin(i * np.pi / 8)
z = i * 0.05
widget.add_site(position=f"[{x},{y},{z}]", size=0.1)
# save and quit.
widget.save(filename)
app.quit()
isosurface plot#
#
# create isosurface for simple cubic tight-binding.
#
from qtdraw.core.qtdraw_app import QtDraw
import numpy as np
from qtdraw.parser.xsf import create_data
# ==================================================
def create_grid_data():
n = [50, 50, 50]
origin = [-0.5, -0.5, -0.5]
A = np.eye(4)
endpoint = True
# data function for each point (dispersion relation).
def ek(x, y, z):
return -2.0 * (np.cos(2 * np.pi * x) + np.cos(2 * np.pi * y) + np.cos(2 * np.pi * z))
# surface function for each point (absolute value of velocity).
def v(x, y, z):
return 4.0 * np.pi * np.sqrt(np.sin(2 * np.pi * x) ** 2 + np.sin(2 * np.pi * y) ** 2 + np.sin(2 * np.pi * z) ** 2)
surface = {"v": v}
grid_data = create_data(n, origin, A, endpoint, ek, surface)
return grid_data
# create data.
grid_data = create_grid_data()
# create QtDraw.
win = QtDraw()
# draw isosurface.
win.set_cell("off")
win.add_isosurface(data=("cubic.py", grid_data), value=[0.5], surface="v", color="coolwarm", color_range=[10, 24])
win.set_view()
win.exec()