public abstract class XYChart<X,Y> extends Chart
It is possible to install Tooltips on data items / symbols. For example the following code snippet installs Tooltip on the 1st data item.
XYChart.Data item = ( XYChart.Data)series.getData().get(0);
Tooltip.install(item.getNode(), new Tooltip("Symbol-0"));
Type | Property and Description |
---|---|
BooleanProperty |
alternativeColumnFillVisible
If true then alternative vertical columns will have fills
|
BooleanProperty |
alternativeRowFillVisible
If true then alternative horizontal rows will have fills
|
ObjectProperty<ObservableList<XYChart.Series<X,Y>>> |
data
XYCharts data
|
BooleanProperty |
horizontalGridLinesVisible
True if horizontal grid lines should be drawn
|
BooleanProperty |
horizontalZeroLineVisible
If this is true and the horizontal axis has both positive and negative values then a additional axis line
will be drawn at the zero point
|
BooleanProperty |
verticalGridLinesVisible
True if vertical grid lines should be drawn
|
BooleanProperty |
verticalZeroLineVisible
If this is true and the vertical axis has both positive and negative values then a additional axis line
will be drawn at the zero point
|
animated, legend, legendSide, legendVisible, title, titleSide
background, border, cacheShape, centerShape, height, insets, maxHeight, maxWidth, minHeight, minWidth, opaqueInsets, padding, prefHeight, prefWidth, scaleShape, shape, snapToPixel, width
needsLayout
accessibleHelp, accessibleRoleDescription, accessibleRole, accessibleText, blendMode, boundsInLocal, boundsInParent, cacheHint, cache, clip, cursor, depthTest, disabled, disable, effectiveNodeOrientation, effect, eventDispatcher, focused, focusTraversable, hover, id, inputMethodRequests, layoutBounds, layoutX, layoutY, localToParentTransform, localToSceneTransform, managed, mouseTransparent, nodeOrientation, onContextMenuRequested, onDragDetected, onDragDone, onDragDropped, onDragEntered, onDragExited, onDragOver, onInputMethodTextChanged, onKeyPressed, onKeyReleased, onKeyTyped, onMouseClicked, onMouseDragEntered, onMouseDragExited, onMouseDragged, onMouseDragOver, onMouseDragReleased, onMouseEntered, onMouseExited, onMouseMoved, onMousePressed, onMouseReleased, onRotate, onRotationFinished, onRotationStarted, onScrollFinished, onScroll, onScrollStarted, onSwipeDown, onSwipeLeft, onSwipeRight, onSwipeUp, onTouchMoved, onTouchPressed, onTouchReleased, onTouchStationary, onZoomFinished, onZoom, onZoomStarted, opacity, parent, pickOnBounds, pressed, rotate, rotationAxis, scaleX, scaleY, scaleZ, scene, style, translateX, translateY, translateZ, visible
Modifier and Type | Class and Description |
---|---|
static class |
XYChart.Data<X,Y>
A single data item with data for 2 axis charts
|
static class |
XYChart.Series<X,Y>
A named series of data items
|
USE_COMPUTED_SIZE, USE_PREF_SIZE
BASELINE_OFFSET_SAME_AS_HEIGHT
Constructor and Description |
---|
XYChart(Axis<X> xAxis,
Axis<Y> yAxis)
Constructs a XYChart given the two axes.
|
Modifier and Type | Method and Description |
---|---|
BooleanProperty |
alternativeColumnFillVisibleProperty()
If true then alternative vertical columns will have fills
|
BooleanProperty |
alternativeRowFillVisibleProperty()
If true then alternative horizontal rows will have fills
|
protected ObjectProperty<Object> |
currentDisplayedExtraValueProperty(XYChart.Data<X,Y> item)
The current displayed extra value property.
|
protected ObjectProperty<X> |
currentDisplayedXValueProperty(XYChart.Data<X,Y> item)
The current displayed data value property that is plotted on X axis.
|
protected ObjectProperty<Y> |
currentDisplayedYValueProperty(XYChart.Data<X,Y> item)
The current displayed data value property that is plotted on Y axis.
|
protected abstract void |
dataItemAdded(XYChart.Series<X,Y> series,
int itemIndex,
XYChart.Data<X,Y> item)
Called when a data item has been added to a series.
|
protected abstract void |
dataItemChanged(XYChart.Data<X,Y> item)
Called when a data item has changed, ie its xValue, yValue or extraValue has changed.
|
protected abstract void |
dataItemRemoved(XYChart.Data<X,Y> item,
XYChart.Series<X,Y> series)
Called when a data item has been removed from data model but it is still visible on the chart.
|
ObjectProperty<ObservableList<XYChart.Series<X,Y>>> |
dataProperty()
XYCharts data
|
static List<CssMetaData<? extends Styleable,?>> |
getClassCssMetaData() |
List<CssMetaData<? extends Styleable,?>> |
getCssMetaData()
This method should delegate to
Node.getClassCssMetaData() so that
a Node's CssMetaData can be accessed without the need for reflection. |
protected Object |
getCurrentDisplayedExtraValue(XYChart.Data<X,Y> item)
The current displayed data extra value.
|
protected X |
getCurrentDisplayedXValue(XYChart.Data<X,Y> item)
The current displayed data value plotted on the X axis.
|
protected Y |
getCurrentDisplayedYValue(XYChart.Data<X,Y> item)
The current displayed data value plotted on the Y axis.
|
ObservableList<XYChart.Series<X,Y>> |
getData()
Gets the value of the property data.
|
protected Iterator<XYChart.Data<X,Y>> |
getDisplayedDataIterator(XYChart.Series<X,Y> series)
XYChart maintains a list of all items currently displayed this includes all current data + any data items
recently deleted that are in the process of being faded out.
|
protected Iterator<XYChart.Series<X,Y>> |
getDisplayedSeriesIterator()
XYChart maintains a list of all series currently displayed this includes all current series + any series that
have recently been deleted that are in the process of being faded(animated) out.
|
protected ObservableList<Node> |
getPlotChildren()
Modifiable and observable list of all content in the plot.
|
boolean |
getVerticalGridLinesVisible()
Indicates whether vertical grid lines are visible or not.
|
Axis<X> |
getXAxis()
Get the X axis, by default it is along the bottom of the plot
|
Axis<Y> |
getYAxis()
Get the Y axis, by default it is along the left of the plot
|
BooleanProperty |
horizontalGridLinesVisibleProperty()
True if horizontal grid lines should be drawn
|
BooleanProperty |
horizontalZeroLineVisibleProperty()
If this is true and the horizontal axis has both positive and negative values then a additional axis line
will be drawn at the zero point
|
boolean |
isAlternativeColumnFillVisible()
Gets the value of the property alternativeColumnFillVisible.
|
boolean |
isAlternativeRowFillVisible()
Gets the value of the property alternativeRowFillVisible.
|
boolean |
isHorizontalGridLinesVisible()
Gets the value of the property horizontalGridLinesVisible.
|
boolean |
isHorizontalZeroLineVisible()
Gets the value of the property horizontalZeroLineVisible.
|
boolean |
isVerticalZeroLineVisible()
Gets the value of the property verticalZeroLineVisible.
|
protected void |
layoutChartChildren(double top,
double left,
double width,
double height)
Called to update and layout the chart children available from getChartChildren()
|
protected abstract void |
layoutPlotChildren()
Called to update and layout the plot children.
|
protected void |
removeDataItemFromDisplay(XYChart.Series<X,Y> series,
XYChart.Data<X,Y> item)
This should be called from dataItemRemoved() when you are finished with any animation for deleting the item from the
chart.
|
protected void |
removeSeriesFromDisplay(XYChart.Series<X,Y> series)
This should be called from seriesRemoved() when you are finished with any animation for deleting the series from
the chart.
|
protected abstract void |
seriesAdded(XYChart.Series<X,Y> series,
int seriesIndex)
A series has been added to the charts data model.
|
protected void |
seriesChanged(ListChangeListener.Change<? extends XYChart.Series> c)
Called when each atomic change is made to the list of series for this chart
|
protected abstract void |
seriesRemoved(XYChart.Series<X,Y> series)
A series has been removed from the data model but it is still visible on the chart.
|
void |
setAlternativeColumnFillVisible(boolean value)
Sets the value of the property alternativeColumnFillVisible.
|
void |
setAlternativeRowFillVisible(boolean value)
Sets the value of the property alternativeRowFillVisible.
|
protected void |
setCurrentDisplayedExtraValue(XYChart.Data<X,Y> item,
Object value)
Set the current displayed data extra value.
|
protected void |
setCurrentDisplayedXValue(XYChart.Data<X,Y> item,
X value)
Set the current displayed data value plotted on X axis.
|
protected void |
setCurrentDisplayedYValue(XYChart.Data<X,Y> item,
Y value)
Set the current displayed data value plotted on Y axis.
|
void |
setData(ObservableList<XYChart.Series<X,Y>> value)
Sets the value of the property data.
|
void |
setHorizontalGridLinesVisible(boolean value)
Sets the value of the property horizontalGridLinesVisible.
|
void |
setHorizontalZeroLineVisible(boolean value)
Sets the value of the property horizontalZeroLineVisible.
|
void |
setVerticalGridLinesVisible(boolean value)
Sets the value of the property verticalGridLinesVisible.
|
void |
setVerticalZeroLineVisible(boolean value)
Sets the value of the property verticalZeroLineVisible.
|
protected void |
updateAxisRange()
This is called when the range has been invalidated and we need to update it.
|
protected void |
updateLegend()
This is called whenever a series is added or removed and the legend needs to be updated
|
BooleanProperty |
verticalGridLinesVisibleProperty()
True if vertical grid lines should be drawn
|
BooleanProperty |
verticalZeroLineVisibleProperty()
If this is true and the vertical axis has both positive and negative values then a additional axis line
will be drawn at the zero point
|
animate, animatedProperty, computeMinHeight, computeMinWidth, computePrefHeight, computePrefWidth, getAnimated, getChartChildren, getLegend, getLegendSide, getTitle, getTitleSide, isLegendVisible, layoutChildren, legendProperty, legendSideProperty, legendVisibleProperty, requestChartLayout, setAnimated, setLegend, setLegendSide, setLegendVisible, setTitle, setTitleSide, shouldAnimate, titleProperty, titleSideProperty
backgroundProperty, borderProperty, cacheShapeProperty, centerShapeProperty, computeMaxHeight, computeMaxWidth, getBackground, getBorder, getHeight, getInsets, getMaxHeight, getMaxWidth, getMinHeight, getMinWidth, getOpaqueInsets, getPadding, getPrefHeight, getPrefWidth, getShape, getUserAgentStylesheet, getWidth, heightProperty, insetsProperty, isCacheShape, isCenterShape, isResizable, isScaleShape, isSnapToPixel, layoutInArea, layoutInArea, layoutInArea, layoutInArea, maxHeight, maxHeightProperty, maxWidth, maxWidthProperty, minHeight, minHeightProperty, minWidth, minWidthProperty, opaqueInsetsProperty, paddingProperty, positionInArea, positionInArea, prefHeight, prefHeightProperty, prefWidth, prefWidthProperty, resize, scaleShapeProperty, setBackground, setBorder, setCacheShape, setCenterShape, setHeight, setMaxHeight, setMaxSize, setMaxWidth, setMinHeight, setMinSize, setMinWidth, setOpaqueInsets, setPadding, setPrefHeight, setPrefSize, setPrefWidth, setScaleShape, setShape, setSnapToPixel, setWidth, shapeProperty, snappedBottomInset, snappedLeftInset, snappedRightInset, snappedTopInset, snapPosition, snapSize, snapSpace, snapToPixelProperty, widthProperty
getBaselineOffset, getChildren, getChildrenUnmodifiable, getManagedChildren, getStylesheets, isNeedsLayout, layout, lookup, needsLayoutProperty, queryAccessibleAttribute, requestLayout, requestParentLayout, setNeedsLayout, updateBounds
accessibleHelpProperty, accessibleRoleDescriptionProperty, accessibleRoleProperty, accessibleTextProperty, addEventFilter, addEventHandler, applyCss, autosize, blendModeProperty, boundsInLocalProperty, boundsInParentProperty, buildEventDispatchChain, cacheHintProperty, cacheProperty, clipProperty, computeAreaInScreen, contains, contains, cursorProperty, depthTestProperty, disabledProperty, disableProperty, effectiveNodeOrientationProperty, effectProperty, eventDispatcherProperty, executeAccessibleAction, fireEvent, focusedProperty, focusTraversableProperty, getAccessibleHelp, getAccessibleRole, getAccessibleRoleDescription, getAccessibleText, getBlendMode, getBoundsInLocal, getBoundsInParent, getCacheHint, getClip, getContentBias, getCursor, getDepthTest, getEffect, getEffectiveNodeOrientation, getEventDispatcher, getId, getInputMethodRequests, getLayoutBounds, getLayoutX, getLayoutY, getLocalToParentTransform, getLocalToSceneTransform, getNodeOrientation, getOnContextMenuRequested, getOnDragDetected, getOnDragDone, getOnDragDropped, getOnDragEntered, getOnDragExited, getOnDragOver, getOnInputMethodTextChanged, getOnKeyPressed, getOnKeyReleased, getOnKeyTyped, getOnMouseClicked, getOnMouseDragEntered, getOnMouseDragExited, getOnMouseDragged, getOnMouseDragOver, getOnMouseDragReleased, getOnMouseEntered, getOnMouseExited, getOnMouseMoved, getOnMousePressed, getOnMouseReleased, getOnRotate, getOnRotationFinished, getOnRotationStarted, getOnScroll, getOnScrollFinished, getOnScrollStarted, getOnSwipeDown, getOnSwipeLeft, getOnSwipeRight, getOnSwipeUp, getOnTouchMoved, getOnTouchPressed, getOnTouchReleased, getOnTouchStationary, getOnZoom, getOnZoomFinished, getOnZoomStarted, getOpacity, getParent, getProperties, getPseudoClassStates, getRotate, getRotationAxis, getScaleX, getScaleY, getScaleZ, getScene, getStyle, getStyleableParent, getStyleClass, getTransforms, getTranslateX, getTranslateY, getTranslateZ, getTypeSelector, getUserData, hasProperties, hoverProperty, idProperty, inputMethodRequestsProperty, intersects, intersects, isCache, isDisable, isDisabled, isFocused, isFocusTraversable, isHover, isManaged, isMouseTransparent, isPickOnBounds, isPressed, isVisible, layoutBoundsProperty, layoutXProperty, layoutYProperty, localToParent, localToParent, localToParent, localToParent, localToParent, localToParentTransformProperty, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToScene, localToSceneTransformProperty, localToScreen, localToScreen, localToScreen, localToScreen, localToScreen, lookupAll, managedProperty, mouseTransparentProperty, nodeOrientationProperty, notifyAccessibleAttributeChanged, onContextMenuRequestedProperty, onDragDetectedProperty, onDragDoneProperty, onDragDroppedProperty, onDragEnteredProperty, onDragExitedProperty, onDragOverProperty, onInputMethodTextChangedProperty, onKeyPressedProperty, onKeyReleasedProperty, onKeyTypedProperty, onMouseClickedProperty, onMouseDragEnteredProperty, onMouseDragExitedProperty, onMouseDraggedProperty, onMouseDragOverProperty, onMouseDragReleasedProperty, onMouseEnteredProperty, onMouseExitedProperty, onMouseMovedProperty, onMousePressedProperty, onMouseReleasedProperty, onRotateProperty, onRotationFinishedProperty, onRotationStartedProperty, onScrollFinishedProperty, onScrollProperty, onScrollStartedProperty, onSwipeDownProperty, onSwipeLeftProperty, onSwipeRightProperty, onSwipeUpProperty, onTouchMovedProperty, onTouchPressedProperty, onTouchReleasedProperty, onTouchStationaryProperty, onZoomFinishedProperty, onZoomProperty, onZoomStartedProperty, opacityProperty, parentProperty, parentToLocal, parentToLocal, parentToLocal, parentToLocal, parentToLocal, pickOnBoundsProperty, pressedProperty, pseudoClassStateChanged, relocate, removeEventFilter, removeEventHandler, requestFocus, resizeRelocate, rotateProperty, rotationAxisProperty, scaleXProperty, scaleYProperty, scaleZProperty, sceneProperty, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, sceneToLocal, screenToLocal, screenToLocal, screenToLocal, setAccessibleHelp, setAccessibleRole, setAccessibleRoleDescription, setAccessibleText, setBlendMode, setCache, setCacheHint, setClip, setCursor, setDepthTest, setDisable, setDisabled, setEffect, setEventDispatcher, setEventHandler, setFocused, setFocusTraversable, setHover, setId, setInputMethodRequests, setLayoutX, setLayoutY, setManaged, setMouseTransparent, setNodeOrientation, setOnContextMenuRequested, setOnDragDetected, setOnDragDone, setOnDragDropped, setOnDragEntered, setOnDragExited, setOnDragOver, setOnInputMethodTextChanged, setOnKeyPressed, setOnKeyReleased, setOnKeyTyped, setOnMouseClicked, setOnMouseDragEntered, setOnMouseDragExited, setOnMouseDragged, setOnMouseDragOver, setOnMouseDragReleased, setOnMouseEntered, setOnMouseExited, setOnMouseMoved, setOnMousePressed, setOnMouseReleased, setOnRotate, setOnRotationFinished, setOnRotationStarted, setOnScroll, setOnScrollFinished, setOnScrollStarted, setOnSwipeDown, setOnSwipeLeft, setOnSwipeRight, setOnSwipeUp, setOnTouchMoved, setOnTouchPressed, setOnTouchReleased, setOnTouchStationary, setOnZoom, setOnZoomFinished, setOnZoomStarted, setOpacity, setPickOnBounds, setPressed, setRotate, setRotationAxis, setScaleX, setScaleY, setScaleZ, setStyle, setTranslateX, setTranslateY, setTranslateZ, setUserData, setVisible, snapshot, snapshot, startDragAndDrop, startFullDrag, styleProperty, toBack, toFront, toString, translateXProperty, translateYProperty, translateZProperty, usesMirroring, visibleProperty
public final ObjectProperty<ObservableList<XYChart.Series<X,Y>>> dataProperty
getData()
,
setData(ObservableList)
public final BooleanProperty verticalGridLinesVisibleProperty
public final BooleanProperty horizontalGridLinesVisibleProperty
public final BooleanProperty alternativeColumnFillVisibleProperty
public final BooleanProperty alternativeRowFillVisibleProperty
public final BooleanProperty verticalZeroLineVisibleProperty
isVerticalZeroLineVisible()
,
setVerticalZeroLineVisible(boolean)
public final BooleanProperty horizontalZeroLineVisibleProperty
isHorizontalZeroLineVisible()
,
setHorizontalZeroLineVisible(boolean)
public XYChart(Axis<X> xAxis, Axis<Y> yAxis)
xAxis
- X Axis for this XY chartyAxis
- Y Axis for this XY chartpublic final ObservableList<XYChart.Series<X,Y>> getData()
public final void setData(ObservableList<XYChart.Series<X,Y>> value)
public final ObjectProperty<ObservableList<XYChart.Series<X,Y>>> dataProperty()
getData()
,
setData(ObservableList)
public final boolean getVerticalGridLinesVisible()
verticalGridLinesVisible
public final void setVerticalGridLinesVisible(boolean value)
public final BooleanProperty verticalGridLinesVisibleProperty()
public final boolean isHorizontalGridLinesVisible()
public final void setHorizontalGridLinesVisible(boolean value)
public final BooleanProperty horizontalGridLinesVisibleProperty()
public final boolean isAlternativeColumnFillVisible()
public final void setAlternativeColumnFillVisible(boolean value)
public final BooleanProperty alternativeColumnFillVisibleProperty()
public final boolean isAlternativeRowFillVisible()
public final void setAlternativeRowFillVisible(boolean value)
public final BooleanProperty alternativeRowFillVisibleProperty()
public final boolean isVerticalZeroLineVisible()
public final void setVerticalZeroLineVisible(boolean value)
public final BooleanProperty verticalZeroLineVisibleProperty()
isVerticalZeroLineVisible()
,
setVerticalZeroLineVisible(boolean)
public final boolean isHorizontalZeroLineVisible()
public final void setHorizontalZeroLineVisible(boolean value)
public final BooleanProperty horizontalZeroLineVisibleProperty()
isHorizontalZeroLineVisible()
,
setHorizontalZeroLineVisible(boolean)
protected ObservableList<Node> getPlotChildren()
protected void updateLegend()
protected abstract void dataItemAdded(XYChart.Series<X,Y> series, int itemIndex, XYChart.Data<X,Y> item)
series
- The series the data item was added toitemIndex
- The index of the new item within the seriesitem
- The new data item that was addedprotected abstract void dataItemRemoved(XYChart.Data<X,Y> item, XYChart.Series<X,Y> series)
item
- The item that has been removed from the seriesseries
- The series the item was removed fromprotected abstract void dataItemChanged(XYChart.Data<X,Y> item)
item
- The data item who was changedprotected abstract void seriesAdded(XYChart.Series<X,Y> series, int seriesIndex)
series
- The series that has been addedseriesIndex
- The index of the new seriesprotected abstract void seriesRemoved(XYChart.Series<X,Y> series)
series
- The series that has been removedprotected void seriesChanged(ListChangeListener.Change<? extends XYChart.Series> c)
protected void updateAxisRange()
protected abstract void layoutPlotChildren()
protected final void layoutChartChildren(double top, double left, double width, double height)
Chart
layoutChartChildren
in class Chart
top
- The top offset from the origin to account for any padding on the chart contentleft
- The left offset from the origin to account for any padding on the chart contentwidth
- The width of the area to layout the chart withinheight
- The height of the area to layout the chart withinprotected final void removeSeriesFromDisplay(XYChart.Series<X,Y> series)
series
- The series to removeprotected final Iterator<XYChart.Series<X,Y>> getDisplayedSeriesIterator()
protected final X getCurrentDisplayedXValue(XYChart.Data<X,Y> item)
protected final void setCurrentDisplayedXValue(XYChart.Data<X,Y> item, X value)
item
- The XYChart.Data item from which the current X axis data value is obtained.getCurrentDisplayedXValue(javafx.scene.chart.XYChart.Data<X, Y>)
protected final ObjectProperty<X> currentDisplayedXValueProperty(XYChart.Data<X,Y> item)
item
- The XYChart.Data item from which the current X axis data value property object is obtained.getCurrentDisplayedXValue(javafx.scene.chart.XYChart.Data<X, Y>)
protected final Y getCurrentDisplayedYValue(XYChart.Data<X,Y> item)
protected final void setCurrentDisplayedYValue(XYChart.Data<X,Y> item, Y value)
item
- The XYChart.Data item from which the current Y axis data value is obtained.getCurrentDisplayedYValue(javafx.scene.chart.XYChart.Data<X, Y>)
protected final ObjectProperty<Y> currentDisplayedYValueProperty(XYChart.Data<X,Y> item)
item
- The XYChart.Data item from which the current Y axis data value property object is obtained.getCurrentDisplayedYValue(javafx.scene.chart.XYChart.Data<X, Y>)
protected final Object getCurrentDisplayedExtraValue(XYChart.Data<X,Y> item)
protected final void setCurrentDisplayedExtraValue(XYChart.Data<X,Y> item, Object value)
item
- The XYChart.Data item from which the current extra value is obtained.getCurrentDisplayedExtraValue(javafx.scene.chart.XYChart.Data<X, Y>)
protected final ObjectProperty<Object> currentDisplayedExtraValueProperty(XYChart.Data<X,Y> item)
item
- The XYChart.Data item from which the current extra value property object is obtained.getCurrentDisplayedExtraValue(javafx.scene.chart.XYChart.Data<X, Y>)
protected final Iterator<XYChart.Data<X,Y>> getDisplayedDataIterator(XYChart.Series<X,Y> series)
series
- The series to get displayed data forprotected final void removeDataItemFromDisplay(XYChart.Series<X,Y> series, XYChart.Data<X,Y> item)
series
- The series to removeitem
- The item to remove from series's display listpublic static List<CssMetaData<? extends Styleable,?>> getClassCssMetaData()
public List<CssMetaData<? extends Styleable,?>> getCssMetaData()
Node.getClassCssMetaData()
so that
a Node's CssMetaData can be accessed without the need for reflection.getCssMetaData
in interface Styleable
getCssMetaData
in class Chart
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 2008, 2017, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.