Skip to content

XY Chart

In the context of mermaid-js, the XY chart is a comprehensive charting module that encompasses various types of charts that utilize both x-axis and y-axis for data representation. Presently, it includes two fundamental chart types: the bar chart and the line chart. These charts are designed to visually display and analyze data that involve two numerical variables.

It's important to note that while the current implementation of mermaid-js includes these two chart types, the framework is designed to be dynamic and adaptable. Therefore, it has the capacity for expansion and the inclusion of additional chart types in the future. This means that users can expect an evolving suite of charting options within the XY chart module, catering to various data visualization needs as new chart types are introduced over time.




All text values that contain only one word can be written without ". If a text value has many words in it, specifically if it contains spaces, enclose the value in "


The chart can be drawn horizontal or vertical, default value is vertical.

xychart-beta horizontal


The title is a short description of the chart and it will always render on top of the chart.


    title "This is a simple example"


If the title is a single word one no need to use ", but if it has space " is needed


The x-axis primarily serves as a categorical value, although it can also function as a numeric range value when needed.


  1. x-axis title min --> max x-axis will function as numeric with the given range
  2. x-axis "title with space" [cat1, "cat2 with space", cat3] x-axis if categorical, categories are text type


The y-axis is employed to represent numerical range values, it cannot have categorical values.


  1. y-axis title min --> max
  2. y-axis title it will only add the title, the range will be auto generated from data.


Both x and y axis are optional if not provided we will try to create the range

Line chart

A line chart offers the capability to graphically depict lines.


  1. line [2.3, 45, .98, -3.4] it can have all valid numeric values.

Bar chart

A bar chart offers the capability to graphically depict bars.


  1. bar [2.3, 45, .98, -3.4] it can have all valid numeric values.

Simplest example

The only two things required are the chart name (xychart-beta) and one data set. So you will be able to draw a chart with a simple config like

    line [+1.3, .6, 2.4, -.34]

Chart Configurations

ParameterDescriptionDefault value
widthWidth of the chart700
heightHeight of the chart500
titlePaddingTop and Bottom padding of the title10
titleFontSizeTitle font size20
showTitleTitle to be shown or nottrue
xAxisxAxis configurationAxisConfig
yAxisyAxis configurationAxisConfig
chartOrientation'vertical' or 'horizontal''vertical'
plotReservedSpacePercentMinimum space plots will take inside the chart50


ParameterDescriptionDefault value
showLabelShow axis labels or tick valuestrue
labelFontSizeFont size of the label to be drawn14
labelPaddingTop and Bottom padding of the label5
showTitleAxis title to be shown or nottrue
titleFontSizeAxis title font size16
titlePaddingTop and Bottom padding of Axis title5
showTickTick to be shown or nottrue
tickLengthHow long the tick will be5
tickWidthHow width the tick will be2
showAxisLineAxis line to be shown or nottrue
axisLineWidthThickness of the axis line2

Chart Theme Variables


Themes for xychart resides inside xychart attribute so to set the variables use this syntax %%{init: { "themeVariables": {"xyChart": {"titleColor": "#ff0000"} } }}%%

backgroundColorBackground color of the whole chart
titleColorColor of the Title text
xAxisLabelColorColor of the x-axis labels
xAxisTitleColorColor of the x-axis title
xAxisTickColorColor of the x-axis tick
xAxisLineColorColor of the x-axis line
yAxisLabelColorColor of the y-axis labels
yAxisTitleColorColor of the y-axis title
yAxisTickColorColor of the y-axis tick
yAxisLineColorColor of the y-axis line
plotColorPaletteString of colors separated by comma e.g. "#f3456, #43445"

Example on config and theme