Plotting with Configurations in pyprocar#

This example illustrates how to utilize various configurations for plotting band structures using the pyprocar package. It provides a structured way to explore and demonstrate different configurations for the bandsplot function.

Preparation#

Before diving into plotting, we need to download the example files. Use the following code to do this. Once downloaded, specify the data_dir to point to the location of the downloaded data.

Downloading example#
 import pyprocar

 data_dir = pyprocar.download_example(
                             save_dir='',
                             material='Fe',
                             code='vasp',
                             spin_calc_type='spin-polarized-colinear',
                             calc_type='bands'
                            )
import os
import pyprocar

# Define the directory containing the example data

data_dir = f"{pyprocar.utils.ROOT}{os.sep}data{os.sep}examples{os.sep}Fe{os.sep}vasp{os.sep}spin-polarized-colinear{os.sep}bands"
code='vasp'
spins=[0,1]
# Section 1: Locating and Printing Configuration Files
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#
# This section demonstrates where the configuration files are located in the package.
# It also shows how to print the configurations by setting print_plot_ops=True.
#

# Path to the configuration files in the package
config_path = os.path.join(pyprocar.__path__[0], 'cfg')
print(f"Configuration files are located at: {config_path}")

# Print the configurations
pyprocar.bandsplot(code=code,dirname=data_dir,fermi=5.590136,print_plot_opts=True)
plot bandsplot configurations
Configuration files are located at: z:\research projects\pyprocar\pyprocar\cfg

            ----------------------------------------------------------------------------------------------------------
            There are additional plot options that are defined in the configuration file.
            You can change these configurations by passing the keyword argument to the function.
            To print a list of all plot options set `print_plot_opts=True`

            Here is a list modes : plain , parametric , scatter , atomic , overlay , overlay_species , overlay_orbitals , ipr
            ----------------------------------------------------------------------------------------------------------

spin_colors : {'description': 'The colors for the plot lines.', 'value': ['blue', 'red']}
color : {'description': 'The colors for the plot lines.', 'value': 'black'}
colorbar_title : {'description': 'Title of the colorbar.', 'value': 'Atomic Orbital Projections'}
colorbar_title_size : {'description': 'Font size of the title of the colorbar.', 'value': 15}
colorbar_title_padding : {'description': 'Padding of the title of the colorbar.', 'value': 20}
colorbar_tick_labelsize : {'description': 'Size of the title of the colorbar ticks', 'value': 10}
cmap : {'description': 'The colormap used for the plot.', 'value': 'jet'}
clim : {'description': 'The color scale for the color bar', 'value': [None, None]}
fermi_color : {'description': 'The color of the Fermi line.', 'value': 'blue'}
fermi_linestyle : {'description': 'The linestyle of the Fermi line.', 'value': 'dotted'}
fermi_linewidth : {'description': 'The linewidth of the Fermi line.', 'value': 1}
grid : {'description': 'If true, a grid will be shown on the plot.', 'value': False}
grid_axis : {'description': 'Which axis (or both) the grid lines should be drawn on.', 'value': 'both'}
grid_color : {'description': 'The color of the grid lines.', 'value': 'grey'}
grid_linestyle : {'description': 'The linestyle of the grid lines.', 'value': 'solid'}
grid_linewidth : {'description': 'The linewidth of the grid lines.', 'value': 1}
grid_which : {'description': 'Which grid lines to draw (major, minor or both).', 'value': 'major'}
label : {'description': 'The labels for the plot lines.', 'value': ['$\\uparrow$', '$\\downarrow$']}
legend : {'description': 'If true, a legend will be shown on the plot.', 'value': True}
linestyle : {'description': 'The linestyles for the plot lines.', 'value': ['solid', 'dashed']}
linewidth : {'description': 'The linewidths for the plot lines.', 'value': [1.0, 1.0]}
marker : {'description': 'The marker styles for the plot points.', 'value': ['o', 'v', '^', 'D']}
markersize : {'description': 'The size of the markers for the plot points.', 'value': [0.2, 0.2]}
opacity : {'description': 'The opacities for the plot lines.', 'value': [1.0, 1.0]}
plot_color_bar : {'description': 'If true, a color bar will be shown on the plot.', 'value': True}
savefig : {'description': 'The file name to save the figure. If null, the figure will not be saved.', 'value': None}
title : {'description': 'The title for the plot. If null, no title will be displayed.', 'value': None}
weighted_color : {'description': 'If true, the color of the lines will be weighted.', 'value': True}
weighted_width : {'description': 'If true, the width of the lines will be weighted.', 'value': False}
figure_size : {'description': 'The size of the figure (width, height) in inches.', 'value': [9, 6]}
dpi : {'description': "The resolution in dots per inch. If 'figure', use the figure's dpi value.", 'value': 'figure'}

(<Figure size 900x600 with 1 Axes>, <Axes: xlabel='K vector', ylabel='E - E$_F$ (eV)'>)
# Section 2: Changing cmap, clim, and Fermi line properties in Parametric Mode
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#
# This section demonstrates how to change the colormap (cmap), color limits (clim),
# and Fermi line properties (color, linestyle, and linewidth) in parametric mode.
#

pyprocar.bandsplot(
    code=code,
    dirname=data_dir,
    mode='parametric',
    fermi=5.590136,
    atoms=[0],
    orbitals=[4,5,6,7,8],
    cmap='viridis',  # Colormap
    clim=[0, 1],  # Color limits
    fermi_color='red',  # Fermi line color
    fermi_linestyle='--',  # Fermi line linestyle
    fermi_linewidth=2.0  # Fermi line linewidth
)
plot bandsplot configurations
            ----------------------------------------------------------------------------------------------------------
            There are additional plot options that are defined in the configuration file.
            You can change these configurations by passing the keyword argument to the function.
            To print a list of all plot options set `print_plot_opts=True`

            Here is a list modes : plain , parametric , scatter , atomic , overlay , overlay_species , overlay_orbitals , ipr
            ----------------------------------------------------------------------------------------------------------


(<Figure size 900x600 with 2 Axes>, <Axes: xlabel='K vector', ylabel='E - E$_F$ (eV)'>)
# Section 3: Setting Marker and Marker Size in Scatter Mode
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#
# This section demonstrates how to set the marker style and marker size in scatter mode.
#

pyprocar.bandsplot(
    code=code,
    dirname=data_dir,
    mode='scatter',
    fermi=5.590136,
    atoms=[0],
    orbitals=[4,5,6,7,8],
    marker=['v','o'],  # Marker style
    markersize=[10,5]  # Marker size list for the 2 spin plots
)
plot bandsplot configurations
            ----------------------------------------------------------------------------------------------------------
            There are additional plot options that are defined in the configuration file.
            You can change these configurations by passing the keyword argument to the function.
            To print a list of all plot options set `print_plot_opts=True`

            Here is a list modes : plain , parametric , scatter , atomic , overlay , overlay_species , overlay_orbitals , ipr
            ----------------------------------------------------------------------------------------------------------


(<Figure size 900x600 with 2 Axes>, <Axes: xlabel='K vector', ylabel='E - E$_F$ (eV)'>)
# Section 4: Setting the Figure Size and DPI
# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#
# This section demonstrates how to set the figure size and dots per inch (DPI) for the plot.
#

pyprocar.bandsplot(
    code=code,
    dirname=data_dir,
    mode='scatter',
    fermi=5.590136,
    atoms=[0],
    orbitals=[4,5,6,7,8],
    figure_size=(10, 6),  # Figure size (width, height)
    dpi=300  # Dots per inch
)
plot bandsplot configurations
            ----------------------------------------------------------------------------------------------------------
            There are additional plot options that are defined in the configuration file.
            You can change these configurations by passing the keyword argument to the function.
            To print a list of all plot options set `print_plot_opts=True`

            Here is a list modes : plain , parametric , scatter , atomic , overlay , overlay_species , overlay_orbitals , ipr
            ----------------------------------------------------------------------------------------------------------


(<Figure size 1000x600 with 2 Axes>, <Axes: xlabel='K vector', ylabel='E - E$_F$ (eV)'>)

Total running time of the script: ( 0 minutes 2.716 seconds)

Gallery generated by Sphinx-Gallery