This short tutorial will explain how we can add various types of information as a watermark on charts.
In plot area of an XY chart
An XY chart has a special container called a plot area, accessible via chart.plotContainer.
We can create any type of element, as well as push it into plot container's children.
The following code adds a text in a lower-left corner of the plot area, as well as a logo to the lower-right corner.
let copyright = chart.plotContainer.children.push(am5.Label.new(root, {
text: "Copyright amCharts",
x: 10,
y: am5.p100,
centerY: am5.p100,
dy: -10
}));
let logo = chart.plotContainer.children.push(am5.Picture.new(root, {
src: "https://assets.codepen.io/t-160/amcharts_light.svg",
width: 100,
x: am5.p100,
centerX: am5.p100,
dx: -10,
y: am5.p100,
centerY: am5.p100
}));
var copyright = chart.plotContainer.children.push(am5.Label.new(root, {
text: "Copyright amCharts",
x: 10,
y: am5.p100,
centerY: am5.p100,
dy: -10
}));
var logo = chart.plotContainer.children.push(am5.Picture.new(root, {
src: "https://assets.codepen.io/t-160/amcharts_light.svg",
width: 100,
x: am5.p100,
centerX: am5.p100,
dx: -10,
y: am5.p100,
centerY: am5.p100
}));
See the Pen Line Graph by amCharts team (@amcharts) on CodePen.
In a panel of stock chart
Since panels of a stock chart are essentially instances of an XY charts, we can do the same as we did in the previous section: push elements into panel's plotContainer.children:
let copyright = mainPanel.plotContainer.children.push(am5.Label.new(root, {
text: "Copyright amCharts",
x: 10,
y: am5.p100,
centerY: am5.p100,
dy: -10
}));
let logo = mainPanel.plotContainer.children.push(am5.Picture.new(root, {
src: "https://assets.codepen.io/t-160/amcharts_light.svg",
width: 100,
x: am5.p100,
centerX: am5.p100,
dx: -10,
y: am5.p100,
centerY: am5.p100
}));
var copyright = mainPanel.plotContainer.children.push(am5.Label.new(root, {
text: "Copyright amCharts",
x: 10,
y: am5.p100,
centerY: am5.p100,
dy: -10
}));
var logo = mainPanel.plotContainer.children.push(am5.Picture.new(root, {
src: "https://assets.codepen.io/t-160/amcharts_light.svg",
width: 100,
x: am5.p100,
centerX: am5.p100,
dx: -10,
y: am5.p100,
centerY: am5.p100
}));
See the Pen Watermarks on a StockChart by amCharts team (@amcharts) on CodePen.
In a map chart
On charts that do not have a plot container, we can just push our watermark elements as children of the chart itself.
The following code will add watermarks to a map chart:
let copyright = chart.children.push(am5.Label.new(root, {
text: "Copyright amCharts",
x: 10,
y: am5.p100,
centerY: am5.p100,
dy: -10
}));
let logo = chart.children.push(am5.Picture.new(root, {
src: "https://assets.codepen.io/t-160/amcharts_light.svg",
width: 100,
x: am5.p100,
centerX: am5.p100,
dx: -10,
y: am5.p100,
centerY: am5.p100
}));
var copyright = chart.children.push(am5.Label.new(root, {
text: "Copyright amCharts",
x: 10,
y: am5.p100,
centerY: am5.p100,
dy: -10
}));
var logo = chart.children.push(am5.Picture.new(root, {
src: "https://assets.codepen.io/t-160/amcharts_light.svg",
width: 100,
x: am5.p100,
centerX: am5.p100,
dx: -10,
y: am5.p100,
centerY: am5.p100
}));
See the Pen Watermarks on a MapChart by amCharts team (@amcharts) on CodePen.
Positioning watermarks
Watermark position withing the parent container can be controlled via several settings:
| Setting | Comment |
|---|---|
x and y | Horizontal and vertical coordinates. Can be either absolute pixel value (e.g. 50, 0, -10, etc.), or relative (e.g. am5.percent(50), am5.p100, etc.).Relative values are calculated based on width or height of the container, e.g. plot area. |
centerX and centerY | Which horizontal (centerX) or vertical (centerY) position within the element to consider a center when positioning it.Can be either absolute pixel value (e.g. 50, 0, -10, etc.), or relative (e.g. am5.percent(50), am5.p100, etc.).Relative values are calculated based on width or height of the element itself. |
dx and dy | Adjustment of the position of the element. Accepts only absolute pixel values. Positive value will shift the element right/down. Negative ones will shift the element left/up. |