candlestick
The candlestick
adds a candlestick layer function optionally creates a new context with boxes aesthetics and new dataset which contains the "candlestick" statistic calculated on sample of four numeric variables (open, high, low, close) in several groups defined by x.
Candlestick is a type of chart commonly used in financial markets to represent the price movement of an asset, such as stocks or cryptocurrencies. It consists of individual "candles" that display the opening, closing, high, and low prices for a specific time period. Each candle has a rectangular body, representing the opening and closing prices, and thin lines, called wicks or shadows, indicating the highest and lowest prices during that time frame.
Arguments
X
Type of x categories
x
Required
Iterable<X> Column<X> String
The x
argument is used to provide the x-categories of candle.
open
Required
Iterable Column String
The open
argument is used to provide the opening value of candle.
high
Required
Iterable Column String
The high
argument is used to provide the high (maximum) value of candle.
low
Required
Iterable Column String
The low
argument is used to provide the low (minimum) value of candle.
close
Required
Iterable Column String
The close
argument is used to provide the closing value of candle.
Statistic properties
In this context, there are the following statistical properties that can be used to create mappings, customize tooltips, etc.
Stat.x
Column<X>
The Stat.x
contains candle x category.
Stat.open
Column<Double>
The Stat.open
contains candle open. Equals to input open.
Stat.close
Column<Double>
The Stat.close
contains candle close. Equals to input close.
Stat.min
Column<Double>
The Stat.min
contains candle minimum. Equals to input low.
Stat.lower
Column<Double>
The Stat.lower
contains lower candle edges (i.e. smaller of open/close).
Stat.upper
Column<Double>
The Stat.upper
contains upper candle edges (i.e. greater of open/close).
Stat.max
Column<Double>
The Stat.min
contains candle maximum. Equals to input high.
Stat.isIncreased
Column<Boolean>
The Stat.isIncreased
contains candle increase indicator: true
if close value is greater than open value.
Boxes aesthetic properties
See boxes.
x
Has default mapping Positional
Iterable Column String Any
The x
aesthetic is foundational in plotting, representing the x-coordinate of elements within a plot. This aesthetic is crucial for positioning elements along the x-axis, thereby defining their placement within the plot's coordinate system.
Setting
x.constant(Any)
: Assigns a fixed x-coordinate to all elements within a layer, effectively positioning them at a specific point along the x-axis. This is useful for aligning elements across different layers or for creating reference lines. Example usage:x.constant(0.9)
sets the x-coordinate of all applicable elements to 0.9.
Mapping
x(Iterable)
: Each element's x-coordinate is linked to a value from an iterable collection, enabling the representation of data variations along the x-axis.x(ColumnReference | KProperty | DataColumn)
: element positions are associated with a DataFrame column, allowing for the visualization of data-driven positioning along the x-axis.x(String)
: ties element positions to data based on the column name in the DataFrame or by a key in a Map, offering flexibility in data representation through x-coordinates.
Characteristics of the x
aesthetic
Data Positioning — The
x
aesthetic is essential for determining where elements are placed along the x-axis, impacting how data is visualized and interpreted within the plot's spatial context.Scaling — Proper use of the
x
aesthetic can significantly enhance the dynamism and readability of a plot, facilitating the effective communication of complex data patterns and relationships.
lower
Has default mapping Positional
Iterable Column String Any
The lower
aesthetic is specifically designed for use in box plots, where it represents the lower quartile of the data. This quartile marks the bottom edge of the box, indicating the value below which 25% of the data points fall. The lower
aesthetic is critical for accurately displaying the distribution of data within a box plot.
Setting
lower.constant(Any)
: directly sets the lower quartile value for all boxes in the plot. This approach is useful for highlighting a specific threshold or for comparative analysis across different datasets. Example:lower.constant(0.7)
uniformly sets the lower quartile to 0.7 for all boxes.
Mapping
lower(Iterable)
: associates the lower quartile of each box with values from an iterable collection. This method allows for variable lower quartiles across boxes, useful for visualizing distributions from different groups or categories.lower(ColumnReference | KProperty | DataColumn)
: dynamically links the lower quartile of boxes to a DataFrame column. This mapping is essential for directly visualizing the statistical properties of the dataset.lower(String)
: connects the lower quartile to data based on the column name in the DataFrame or by key in a Map, offering flexibility in data representation.
middle
Has default mapping Positional
Iterable Column String Any
The middle
aesthetic is instrumental in visualizing the central tendency within box plots and crossbars, representing the median of the data in box plots and the central value in crossbars. This aesthetic is key to conveying the central point around which the distribution or error bars are constructed, providing a clear visual indicator of the dataset's middle value.
Setting
middle.constant(Any)
: applies a fixed value for the median or central value across all applicable elements within a layer. This method is useful for comparative analysis or highlighting specific median values across groups. Example:middle.constant(1.1)
uniformly sets the median or central value to 1.1 for all elements.
Mapping
middle(Iterable)
: links each element's median or central value to a value from an iterable collection, allowing for the visualization of variable middle points across different data groups or categories.middle(ColumnReference | KProperty | DataColumn)
: dynamically associates the median or central value with a DataFrame column, enabling the representation of data-driven median values.middle(String)
: connects the median or central value to data based on the column name in the DataFrame or by key in a Map, offering flexibility in representing central tendencies through data.
upper
Has default mapping Positional
Iterable Column String Any
The upper
aesthetic plays a crucial role in box plots by representing the upper quartile of the dataset. This quartile marks the top edge of the box, indicating the value above which 25% of the data points fall. The upper
aesthetic is essential for accurately displaying the spread and distribution of data within a box plot.
Setting
upper.constant(Any)
: assigns a uniform upper quartile value across all boxes in the plot. This method is beneficial for standardizing comparisons or highlighting specific thresholds across datasets. Example:upper.constant(1.5)
sets a consistent upper quartile to 1.5 for all boxes.
Mapping
upper(Iterable)
: each box's upper quartile is associated with a value from an iterable collection, enabling the visualization of varying upper quartiles across different data groups or categories.upper(ColumnReference | KProperty | DataColumn)
: dynamically links the upper quartile of boxes to a DataFrame column, allowing for the visualization of data-driven upper quartiles.upper(String)
: connects the upper quartile to data based on the column name in the DataFrame or by key in a Map, offering flexibility in representing upper limits through data.
yMin
Has default Positional
Iterable Column String Any
The yMin
aesthetic specifies the minimum y-coordinate for elements within plots, crucial for defining the vertical lower bounds of elements such as boxes, crossbars, error bars, line ranges, point ranges, rectangles, and ribbons. This aesthetic is fundamental in accurately portraying the lower limits of data within these types of visualizations.
Setting
yMax.constant(Any)
: sets a uniform minimum y-coordinate across all relevant elements within a layer, ideal for establishing a fixed lower limit. For example,yMin.constant(0.1)
uniformly sets the lower boundary of elements to a y-coordinate of 0.1.
Mapping
yMax(Iterable)
: each element's minimum y-coordinate is linked to a value from an iterable collection, allowing for the depiction of varying lower boundaries within a layer to represent different data points or ranges.yMax(ColumnReference | KProperty | DataColumn)
: associates the minimum y-coordinate of elements with a DataFrame column, facilitating the visualization of data-driven lower boundaries.yMax(String)
: ties the minimum y-coordinate of elements to data based on the column name in the DataFrame or by key in a Map, offering adaptability in representing lower limits through y-coordinates.
Characteristics of the y
aesthetic
Scaling — The flexibility to map
yMin
to data or define it as a constant value affords extensive customization opportunities, allowing for precise tailoring of the visual representation of lower data boundaries.
yMax
Has default mapping Positional
Iterable Column String Any
The yMax
aesthetic specifies the maximum y-coordinate for elements within plots, playing a critical role in defining the vertical extent of elements such as boxes
, crossBars
, errorBars, lineRanges
, pointRanges
, rectangles
, and ribbons
. This aesthetic is essential for accurately representing the upper boundaries of data within these plot types.
Setting
yMax.constant(Any)
: establishes a uniform maximum y-coordinate across all applicable elements within a layer, useful for setting a fixed upper limit. Example usage:yMax.constant(0.9)
uniformly sets the upper boundary of elements to a y-coordinate of 0.9.
Mapping
yMax(Iterable)
: associates each element's maximum y-coordinate with a value from an iterable collection, allowing for varied upper boundaries within a single layer to represent different data points or ranges.yMax(ColumnReference | KProperty | DataColumn)
: links the maximum y-coordinate of elements to a DataFrame column, enabling the visualization of data-driven upper boundaries.yMax(String)
: connects the maximum y-coordinate of elements to data based on the column name in the DataFrame or by a key in a Map, offering flexibility in representing upper limits through y-coordinates.
Characteristics of the y
aesthetic
Scaling — Mapping
yMax
to data or setting it as a constant value provides extensive customization options, enabling precise control over the representation of upper data boundaries.
alpha
Optional NonPositional
Iterable Column String Double
The alpha aesthetic controls the transparency of elements in a plot. It provides a means to adjust the visual prominence of elements, ranging from fully transparent (0.0) to fully opaque (1.0).
Setting
alpha = Double
: applies a uniform transparency level to all elements within a layer. The Double value should be within the range of 0.0 (completely transparent) to 1.0 (completely opaque).
Mapping
alpha(Iterable)
: associates the transparency of each element with a value from an iterable collection.alpha(ColumnReference | KProperty | DataColumn)
: links transparency with data from a specified DataFrame column.alpha(String)
: transparency is associated with data from a DataFrame column specified by its name or with data from a Map by key.
Characteristics of the alpha
aesthetic
Value range — It is crucial to ensure that all alpha values are within the 0.0 to 1.0 range. Values outside this range will trigger an
IllegalArgumentException
.Scaling and validation — When mapping
alpha
to data, additional scaling adjustments and value validation ensure proper representation of transparency.
width
Optional NonPositional
Iterable Column String Double
The width
aesthetic is crucial for adjusting the width of visual elements across various plot types, including bars
, boxes
, crossBars
, errorBars
, and tiles
.
Setting
width = Double
: Provides a uniform width to all applicable elements within a layer. The Double value is representation of width, for instance,width = 0.9
would set the width of elements to 0.9 units.
Mapping
width(Iterable)
: each element's width is associated with a value from an iterable collection, allowing for the representation of data variations through width differences.width(ColumnReference | KProperty | DataColumn)
: element widths are linked to a DataFrame column, enabling visualization of data-driven width variations.width(String)
: connects widths to data based on the column name in the DataFrame or by a key in a Map, providing flexibility in representing data through width.
fillColor
Optional NonPositional
Iterable Column String Color
The fillColor
aesthetic plays a crucial role in defining the visual representation of plot elements by setting their fill color. It allows for both uniform color application and data-driven color variations.
Setting
fillColor = Color
: provides a uniform fill color to all elements within a layer, applicable for creating visually cohesive plot elements. The value can be a predefinedColor
constant likeColor.RED
or a custom color defined byColor.hex("#ff0000")
.
Mapping
fillColor(Iterable)
: associates the fill color of each element with a value from an iterable collection, allowing for a variety of fill colors within a single layer.fillColor(ColumnReference | KProperty | DataColumn)
: links element fill colors with a column in the DataFrame, enabling the visualization of data-driven color variations.fillColor(String)
: connects fill colors to data based on the column name in the DataFrame or by key in a Map, offering flexibility in data representation through color.
Characteristics of the fillColor
aesthetic
Versatility in data representation — The
fillColor
aesthetic can be used to represent different categories, intensities, or other data dimensions, providing a rich layer of information in visualizations.Scaling and validation — When mapping
fillColor
to data, you can customize the color scale and adjust the mapping to fit specific visualization needs.
fatten
Optional NonPositional
Double
The fatten
aesthetic is designed to adjust the thickness or size of elements in particular types of visual representations, such as boxes
, crossBars
, and pointRanges
. It serves as a crucial aesthetic for emphasizing or de-emphasizing certain aspects of these plots.
Setting
fatten = Double
: directly modifies the thickness or enlargement factor of the applicable elements within the specified layers. The value is a numeric factor that determines how much the elements should be "fattened". For example, settingfatten = 0.3
adjusts the size of the elements according to the specified factor.
borderLine
The borderLine
group of aesthetics provides a comprehensive way to customize the appearance of borders around plot elements such as boxes, bars, and other geometries that support border customization. This set of aesthetics allows you to adjust the color, line type, and width of the borderlines to enhance the visual appeal and clarity of your plots.
Available aesthetics within borderLine
:
borderLine.color
— Specifies the color of the borderline.borderLine.type
— Determines the style of the borderline.borderLine.width
— Controls the thickness of the borderline.
borderLine.color
Optional NonPositional
Iterable Column String Color
The color aesthetic is a key feature in data visualization, allowing you to set the color of plot elements to enhance the interpretability and visual appeal of your graphs. This aesthetic facilitates both the differentiation of data points and the conveyance of additional data dimensions through color.
Setting
color = Color
: assigns a uniform color to all elements within a layer. The value can be a predefinedColor
constant likeColor.RED
or a custom color defined byColor.hex("#ff0000")
.
Mapping
color(Iterable)
: links the color of each element to a value from an iterable collection, allowing for varied color assignments within a layer.color(ColumnReference | KProperty | DataColumn)
: associates element colors with a column in the DataFrame, enabling data-driven color variations.color(String)
: connects colors to data based on the column name in the DataFrame or by key in a Map, offering flexibility in data representation.
Characteristics of the color
aesthetic
Versatility in data representation — The
color
aesthetic can be used to represent different categories, intensities, or other data dimensions, providing a rich layer of information in visualizations.Scaling and validation — When mapping
color
to data, you can customize the color scale and adjust the mapping to fit specific visualization needs.
borderLine.type
Optional NonPositional
Iterable Column String LineType
The type aesthetic is used to specify the style of lines in a plot, allowing for a diverse range of visual representations. This aesthetic enables the customization of line styles, providing clarity and distinction in data visualizations.
Setting
type = LineType
: applies a specific line style to lines within a layer. The value can be one of the predefinedLineType
constants:LineType.BLANK
LineType.SOLID
LineType.DASHED
LineType.DOTTED
LineType.DOTDASH
LineType.LONGDASH
LineType.TWODASH
Mapping
type(Iterable)
: links the line style of each element to a value from an iterable collection, allowing for various line styles within a single layer.type(ColumnReference | KProperty | DataColumn)
: associates line styles with a column in the DataFrame, facilitating data-driven line style variations.type(String)
: connects line styles to data based on the column name in the DataFrame or by key in a Map, offering flexibility in line style representation.
borderLine.width
Optional NonPositional
Iterable Column String Double
The width
aesthetic is crucial for adjusting the width of visual elements across various plot types, including bars
, boxes
, crossBars
, errorBars
, and tiles
.
Setting
width = Double
: Provides a uniform width to all applicable elements within a layer. The Double value is representation of width, for instance,width = 0.9
would set the width of elements to 0.9 units.
Mapping
width(Iterable)
: each element's width is associated with a value from an iterable collection, allowing for the representation of data variations through width differences.width(ColumnReference | KProperty | DataColumn)
: element widths are linked to a DataFrame column, enabling visualization of data-driven width variations.width(String)
: connects widths to data based on the column name in the DataFrame or by a key in a Map, providing flexibility in representing data through width.
increase / decrease
In addition to the usual customization using mappings on statistics, candlestick
has an additional simplified API that allows you to quickly customize a candle depending on its character (is it increase or decrease), using increase
and decrease
contexts. In them, you can assign a value to several aesthetics (fillColor, alpha, borderLine).
Free Scales
y
Optional
AxisParameters
The Free Scale Y
aesthetic provides advanced customization for the y-axis in plots, offering a flexible approach to setting axis parameters beyond the standard positional aesthetics.
Modifying Axis Parameters
y { ... }
— Directly manipulates the y-axis parameters through a lambda function, providing a straightforward way to apply custom configurations to the y-axis. The free scaley
allows for detailed customization of the y-axis, including but not limited to setting axis limits and adjusting axis appearance.