bands-visualiser
Version:
A plotly.js renderer for Bands, DOS, combined Bands/Dos and fatBands.
57 lines (49 loc) • 1.34 kB
JavaScript
import {
plotDOSLayout,
plotDOSLayoutF,
traceDefaultDos,
} from "./utils/MCXDPlotTemplates";
import { getColor } from "./utils/plotUtils";
export function getDosLayout(orientation = "h") {
let layout;
if (orientation === "v") {
// flipped axis.
layout = plotDOSLayoutF;
} else {
layout = plotDOSLayout;
}
return layout;
}
export function getDosTraces(dosData, orientation = "h", traceFormat = {}) {
const xVals = orientation === "v" ? dosData.y : dosData.x;
const yVals = orientation === "v" ? dosData.x : dosData.y;
const trace = {
...traceDefaultDos,
...traceFormat,
x: xVals,
y: yVals,
};
return trace;
}
export function getDos(dosDataArray, orientation = "h") {
const dosTraces = [];
for (const [index, i] of dosDataArray.entries()) {
let formatting = i.traceFormat;
// if there is no traceFormat info we use the index
if (!formatting || Object.keys(formatting).length === 0) {
formatting = {
name: `DOS ${index}`,
line: {
color: getColor(index),
width: 2.0,
},
};
}
const dosData = i.dosData;
const trace = getDosTraces(dosData, orientation, formatting);
dosTraces.push(trace);
}
const dosLayout = getDosLayout(orientation);
return { dosTraces, dosLayout };
}
export default getDos;