Security News
New Python Packaging Proposal Aims to Solve Phantom Dependency Problem with SBOMs
PEP 770 proposes adding SBOM support to Python packages to improve transparency and catch hidden non-Python dependencies that security tools often miss.
chartjs-chart-error-bars
Advanced tools
Chart.js module for charting error bars plots. This plugin extends the several char types (bar
, horizontalBar
, line
, scatter
, polarArea
)
with their error bar equivalent (barWithErrorBars
, lineWithErrorBars
, scatterWithErrorBars
, polarAreaWithErrorBars
).
Works only with Chart.js >= 3.0.0
Bar Chart
Horizontal Bar Chart
Line Chart
Scatterplot
Polar Area plot
npm install --save chart.js@next @sgratzl/chartjs-esm-facade@next chartjs-chart-error-bars@next
see Samples on Github
Several new styling keys are added to the individual chart types
interface IErrorBarStyling {
/**
* line width of the center line
* @default 1
* @scriptable
*/
errorBarLineWidth: number;
/**
* color of the center line
* @default '#2c2c2c'
* @scriptable
*/
errorBarColor: string;
/**
* line width of the whisker lines
* @default 1
* @scriptable
*/
errorBarWhiskerLineWidth: number;
/**
* width of the whiskers in relation to the bar width, use `0` to force a fixed with, see below
* @default 0.2
* @scriptable
*/
errorBarWhiskerRatio: number;
/**
* pixel width of the whiskers for non bar chart cases
* @default 20
* @scriptable
*/
errorBarWhiskerSize: number;
/**
* color of the whisker lines
* @default '#2c2c2c'
* @scriptable
*/
errorBarWhiskerColor: string;
}
The data structure depends on the chart type. It uses the fact that chart.js is supporting scatterplot. Thus, it is already prepared for object values.
bar
and line
interface IErrorBarItem {
/**
* the actual value
*/
y: number;
/**
* the minimal absolute error bar value
*/
yMin: number;
/**
* the maximal absolute error bar value
*/
yMax: number;
}
bar
with indexAxis: 'y'
interface IErrorBarItem {
/**
* the actual value
*/
x: number;
/**
* the minimal absolute error bar value
*/
xMin: number;
/**
* the maximal absolute error bar value
*/
xMax: number;
}
scatter
interface IErrorBarItem {
/**
* the actual x value
*/
x: number;
/**
* the minimal absolute error bar x value
*/
xMin: number;
/**
* the maximal absolute error bar x value
*/
xMax: number;
/**
* the actual y value
*/
y: number;
/**
* the minimal absolute error bar y value
*/
yMin: number;
/**
* the maximal absolute error bar y value
*/
yMax: number;
}
polarArea
interface IErrorBarItem {
/**
* the actual value
*/
r: number;
/**
* the minimal absolute error bar value
*/
rMin: number;
/**
* the maximal absolute error bar value
*/
rMax: number;
}
Multiple error bars are supported.
The styling options support different array version.
Note: as with other chart.js style options, using an array will be one value per dataset. Thus, to specify the values for different error bars, one needs to wrap it in an object with a v
key having the value itself. The outer for the dataset, the inner for the error bars.
interface IErrorBarStyling {
/**
* line width of the center line
* @default {v: [1, 3]}
* @scriptable
*/
errorBarLineWidth: number | { v: number[] };
/**
* color of the center line
* @default {v: ['#2c2c2c', '#1f1f1f']}
* @scriptable
*/
errorBarColor: string | { v: string[] };
/**
* line width of the whisker lines
* @default {v: [1, 3]}
* @scriptable
*/
errorBarWhiskerLineWidth: number | { v: number[] };
/**
* width of the whiskers in relation to the bar width, use `0` to force a fixed with, see below
* @default {v: [0.2, 0.25]}
* @scriptable
*/
errorBarWhiskerRatio: number | { v: number[] };
/**
* pixel width of the whiskers for non bar chart cases
* @default {v: [20, 24]}
* @scriptable
*/
errorBarWhiskerSize: number | { v: number[] };
/**
* color of the whisker lines
* @default {v: ['#2c2c2c', '#1f1f1f']}
* @scriptable
*/
errorBarWhiskerColor: string | { v: string[] };
}
Just use array of numbers for the corresponding data structures attributes (xMin
, xMax
, yMin
, yMax
). The error bars will be rendered in reversed order. Thus, by convention the most inner error bar is in the first place.
e.g.
{
y: 4,
yMin: [2, 1],
yMax: [5, 6]
}
The ESM build of the library supports tree shaking thus having no side effects. As a consequence the chart.js library won't be automatically manipulated nor new controllers automatically registered. One has to manually import and register them.
Variant A:
import Chart from 'chart.js';
import { BarWithErrorBarsController, RectangleWithErrorBar } from 'chartjs-chart-error-bars';
// register controller in chart.js and ensure the defaults are set
Chart.register(BarWithErrorBarsController, RectangleWithErrorBar);
const chart = new Chart(document.getElementById('canvas').getContext('2d'), {
type: BarWithErrorBarsController.id,
data: {
labels: ['A', 'B'],
datasets: [
{
data: [
{
y: 4,
yMin: 1,
yMax: 6,
},
{
y: 2,
yMin: 1,
yMax: 4,
},
],
},
],
},
});
Variant B:
import { BarWithErrorBarsChart } from 'chartjs-chart-error-bars';
const chart = new BarWithErrorBarsChart(document.getElementById('canvas').getContext('2d'), {
data: {
//...
},
});
npm i -g yarn
yarn set version 2
yarn
yarn pnpify --sdk vscode
yarn install
yarn build
FAQs
Chart.js module for charting error bars
The npm package chartjs-chart-error-bars receives a total of 1,784 weekly downloads. As such, chartjs-chart-error-bars popularity was classified as popular.
We found that chartjs-chart-error-bars demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
PEP 770 proposes adding SBOM support to Python packages to improve transparency and catch hidden non-Python dependencies that security tools often miss.
Security News
Socket CEO Feross Aboukhadijeh discusses open source security challenges, including zero-day attacks and supply chain risks, on the Cyber Security Council podcast.
Security News
Research
Socket researchers uncover how threat actors weaponize Out-of-Band Application Security Testing (OAST) techniques across the npm, PyPI, and RubyGems ecosystems to exfiltrate sensitive data.