Todos los gráficos Ignite UI for Web Components incluyen opciones para configurar muchas opciones de diseño de ejes, como la ubicación, además de tener la capacidad de compartir ejes entre series o tener varios ejes en el mismo gráfico. Estas características se demuestran en los ejemplos que se dan a continuación.
Los siguientes ejemplos se pueden aplicar a los controles IgcCategoryChartComponent así como a IgcFinancialChartComponent.
Ejemplo de ubicaciones de ejes
Para todos los ejes, puede especificar la ubicación del eje en relación con el área de trazado del gráfico. La xAxisLabelLocation propiedad de los gráficos Web Components le permite colocar la línea del eje x y sus etiquetas por encima o por debajo del área de la gráfica. Del mismo modo, puede utilizar la propiedad para colocar el eje Y en el yAxisLabelLocation lado izquierdo o derecho del área de trazado.
El siguiente ejemplo muestra la cantidad de electricidad renovable producida desde 2009, representada por un Gráfico de líneas. Hay un menú desplegable que le permite configurar yAxisLabelLocation para que pueda visualizar cómo se ven los ejes cuando las etiquetas se colocan en el lado izquierdo o derecho en el interior o exterior del área de trazado del gráfico.
<!DOCTYPE html><html><head><title>Sample | Ignite UI | Web Components | infragistics</title><metacharset="UTF-8" /><linkrel="shortcut icon"href="https://static.infragistics.com/xplatform/images/browsers/wc.png" ><linkrel="stylesheet"href="https://fonts.googleapis.com/icon?family=Material+Icons" /><linkrel="stylesheet"href="https://fonts.googleapis.com/css?family=Kanit&display=swap" /><linkrel="stylesheet"href="https://fonts.googleapis.com/css?family=Titillium Web" /><linkrel="stylesheet"href="https://static.infragistics.com/xplatform/css/samples/shared.v8.css" /><linkrel="stylesheet"href="/src/index.css"type="text/css" /></head><body><divid="root"><divclass="container sample"><divclass="options vertical"><igc-property-editor-paneldescription-type="CategoryChart"is-horizontal="true"is-wrapping-enabled="false"name="propertyEditorPanel1"id="propertyEditorPanel1"><igc-property-editor-property-descriptionproperty-path="YAxisLabelLocation"name="YAxisLabelLocation"id="YAxisLabelLocation"label="Y Axis - Label Location"primitive-value="OutsideRight"></igc-property-editor-property-description></igc-property-editor-panel></div><divclass="legend-title">
Renewable Electricity Generated
</div><divclass="legend"><igc-legendname="legend"id="legend"orientation="Horizontal"></igc-legend></div><divclass="container fill"><igc-category-chartname="chart"id="chart"computed-plot-area-margin-mode="Series"included-properties="year, europe, china, america"chart-type="Line"y-axis-title="Labels Location"is-horizontal-zoom-enabled="false"is-vertical-zoom-enabled="false"x-axis-interval="1"y-axis-label-location="OutsideRight"></igc-category-chart></div></div></div><!-- This script is needed only for parcel and it will be excluded for webpack -->
<% if (false) { %><scriptsrc="src/index.ts"></script><% } %>
</body></html>html
/* shared styles are loaded from: *//* https://static.infragistics.com/xplatform/css/samples */css
¿Te gusta esta muestra? Obtenga acceso a nuestro kit de herramientas de Ignite UI for Web Components completo y comience a crear sus propias aplicaciones en minutos. Descárgalo gratis.
Escenarios avanzados de Axis
Para escenarios de diseño de ejes más avanzados, puede utilizar Web Components Gráfico de datos para compartir ejes, agregar varios ejes Y y/o X en la misma área de trazado, o incluso cruzar ejes en valores específicos. En los siguientes ejemplos se muestra cómo utilizar estas características de la IgcDataChartComponent.
Ejemplo de eje compartido
Puede compartir y agregar varios ejes en la misma área de trazado del Web Components IgcDataChartComponent. Es un escenario común usar compartir IgcTimeXAxisComponent y agregar múltiplos IgcNumericYAxisComponent para trazar muchas fuentes de datos que tienen una amplia gama de valores (por ejemplo, precios de acciones y volúmenes de comercio de acciones).
El siguiente ejemplo muestra un gráfico de precio de acciones y volumen comercial con un gráfico de acciones y un Gráfico de columnas trazados. En este caso, el eje Y de la izquierda lo utiliza el Gráfico de columnas y el eje Y de la derecha lo utiliza el gráfico de acciones, mientras que el eje X se comparte entre los dos.
EXAMPLE
DATA
TS
HTML
CSS
exportclassSharedAxisFinancialData{
publicstatic create(items?: number): any[] {
// initial valueslet v = 10000;
let o = 500;
let h = Math.round(o + (Math.random() * 5));
let l = Math.round(o - (Math.random() * 5));
let c = Math.round(l + (Math.random() * (h - l)));
if (items === undefined) {
items = 400;
}
const today = newDate();
const end = newDate(today.getFullYear(), today.getMonth(), today.getDay());
let time = this.addDays(end, -items);
const data: any[] = [];
for (let i = 0; i < items; i++) {
const date = time.toDateString();
const label = this.getShortDate(time, false);
// adding new data item
data.push({"Time": time, "Date": date, "Label": label, "Close": c, "Open": o, "High": h, "Low": l, "Volume": v});
// generating new valuesconst mod = Math.random() - 0.49;
o = Math.round(o + (mod * 20));
o = Math.max(o, 500);
o = Math.min(o, 675);
v = Math.round(v + (mod * 500));
h = Math.round(o + (Math.random() * 5));
l = Math.round(o - (Math.random() * 5));
c = Math.round(l + (Math.random() * (h - l)));
time = this.addDays(time, 1);
}
return data;
}
publicstatic addDays(dt: Date, days: number): Date {
returnnewDate(dt.getTime() + days * 24 * 60 * 60 * 1000);
}
publicstatic getShortDate(dt: Date, showYear: boolean): string {
const months = [
"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
];
const ind = dt.getMonth();
const day = dt.getDay() + 1;
let label = months[ind] + " " + day;
if (showYear) {
label += " " + dt.getFullYear();
}
return label;
}
}
ts
<!DOCTYPE html><html><head><title>DataChartAxisSharing</title><metacharset="UTF-8" /><linkrel="shortcut icon"href="https://static.infragistics.com/xplatform/images/browsers/wc.png" ><linkrel="stylesheet"href="https://fonts.googleapis.com/icon?family=Material+Icons" /><linkrel="stylesheet"href="https://fonts.googleapis.com/css?family=Kanit&display=swap" /><linkrel="stylesheet"href="https://fonts.googleapis.com/css?family=Titillium Web" /><linkrel="stylesheet"href="https://static.infragistics.com/xplatform/css/samples/shared.v8.css"type="text/css" /></head><body><divid="root"><divclass="container sample"><igc-data-chartid="chart"width="100%"height="100%"is-horizontal-zoom-enabled="true"is-vertical-zoom-enabled="true"><igc-category-x-axisname="xAxisShared"label="Label"></igc-category-x-axis><igc-numeric-y-axisname="yAxisRight"label-location="OutsideRight"minimum-value="400"title="Stock Price ($)"maximum-value="700"></igc-numeric-y-axis><igc-numeric-y-axisname="yAxisLeft"label-location="OutsideLeft"minimum-value="5000"title="Trade Volume"maximum-value="45000"major-stroke-thickness="0"abbreviate-large-numbers="true"></igc-numeric-y-axis><igc-column-seriesname="volumeSeries"x-axis-name="xAxisShared"y-axis-name="yAxisLeft"value-member-path="Volume"></igc-column-series><igc-financial-price-seriesname="stockSeries"x-axis-name="xAxisShared"y-axis-name="yAxisRight"display-type="Candlestick"high-member-path="High"low-member-path="Low"close-member-path="Close"open-member-path="Open"></igc-financial-price-series></igc-data-chart></div></div><!-- This script is needed only for parcel and it will be excluded for webpack -->
<% if (false) { %><scriptsrc="src/index.ts"></script><% } %>
</body></html>html
/* shared styles are loaded from: *//* https://static.infragistics.com/xplatform/css/samples */css
Ejemplo de cruce de ejes
Además de colocar los ejes fuera del área de la gráfica, la Web Components IgcDataChartComponent también proporciona opciones para colocar los ejes dentro del área de la gráfica y hacer que se crucen en valores específicos. Por ejemplo, puede crear un gráfico trigonométrico estableciendo crossingAxis y crossingValue propiedades en los ejes x e y para representar las líneas de eje y las etiquetas de eje de modo que se crucen en el punto de origen (0, 0).
El siguiente ejemplo muestra una onda Sin y Cos representada por un gráfico de dispersión con los ejes X e Y cruzándose en el punto de origen (0, 0).
EXAMPLE
TS
HTML
CSS
// data chart's modules:import { IgcDataChartCoreModule, IgcDataChartScatterModule, IgcDataChartScatterCoreModule, IgcDataChartInteractivityModule,
IgcDataChartComponent, IgcLegendComponent, IgcNumericXAxisComponent, IgcNumericYAxisComponent } from'igniteui-webcomponents-charts';
import { ModuleManager } from'igniteui-webcomponents-core';
ModuleManager.register(
IgcDataChartCoreModule,
IgcDataChartScatterModule,
IgcDataChartScatterCoreModule,
IgcDataChartInteractivityModule,
);
exportclassDataChartAxisCrossing{
private chart: IgcDataChartComponent;
private xAxis: IgcNumericXAxisComponent;
private yAxis: IgcNumericYAxisComponent;
private xAxisCrossLabel: HTMLLabelElement;
private yAxisCrossLabel: HTMLLabelElement;
private data: any[] = [];
constructor() {
this.onXAxisSliderChanged = this.onXAxisSliderChanged.bind(this);
this.onYAxisSliderChanged = this.onYAxisSliderChanged.bind(this);
this.initData();
this.chart = document.getElementById('chart') as IgcDataChartComponent;
this.xAxis = document.getElementById("xAxis") as IgcNumericXAxisComponent;
this.yAxis = document.getElementById("yAxis") as IgcNumericYAxisComponent;
this.xAxis.crossingAxis = this.yAxis;
this.yAxis.crossingAxis = this.xAxis;
this.xAxisCrossLabel = document.getElementById("xAxisCrossLabel") as HTMLLabelElement;
this.yAxisCrossLabel = document.getElementById("yAxisCrossLabel") as HTMLLabelElement;
const xAxisSlider = document.getElementById("xAxisCrossingSlider") as HTMLInputElement;
xAxisSlider.addEventListener("input", this.onXAxisSliderChanged);
const yAxisSlider = document.getElementById("yAxisCrossingSlider") as HTMLInputElement;
yAxisSlider.addEventListener("input", this.onYAxisSliderChanged);
this.chart.dataSource = this.data;
}
publicinitData() {
for (let i = -360; i <= 360; i += 10) {
const radians = (i * Math.PI) / 180;
const sin = Math.sin(radians);
const cos = Math.cos(radians);
this.data.push({ X: i, sinValue: sin, cosValue: cos });
}
}
publiconXAxisSliderChanged(e: any) {
const value = e.target.value;
this.yAxis.crossingValue = value;
this.xAxisCrossLabel.textContent = value;
}
publiconYAxisSliderChanged(e: any) {
const value = e.target.value;
this.xAxis.crossingValue = value;
this.yAxisCrossLabel.textContent = value;
}
}
new DataChartAxisCrossing();
ts
<!DOCTYPE html><html><head><title>DataChartAxisCrossing</title><metacharset="UTF-8" /><linkrel="shortcut icon"href="https://static.infragistics.com/xplatform/images/browsers/wc.png" ><linkrel="stylesheet"href="https://fonts.googleapis.com/icon?family=Material+Icons" /><linkrel="stylesheet"href="https://fonts.googleapis.com/css?family=Kanit&display=swap" /><linkrel="stylesheet"href="https://fonts.googleapis.com/css?family=Titillium Web" /><linkrel="stylesheet"href="https://static.infragistics.com/xplatform/css/samples/shared.v8.css"type="text/css" /></head><body><divid="root"><divclass="container sample"><divclass="options horizontal"><labelclass="option-label">X-Axis Crossing Value: </label><labelclass="options-value"id="xAxisCrossLabel">0</label><inputclass="options-slider"id="xAxisCrossingSlider"type="range"min="-360"max="360"step="10"value="0"/><labelclass="option-label">Y-Axis Crossing Value: </label><labelclass="options-value"id="yAxisCrossLabel">0</label><inputclass="options-slider"id="yAxisCrossingSlider"type="range"min="-1.25"max="1.25"step="0.125"value="0"/></div><divclass="container"style="height: calc(100% - 3rem)"><igc-data-chartid="chart"width="100%"height="100%"is-horizontal-zoom-enabled="true"is-vertical-zoom-enabled="true"plot-area-margin-bottom="60"plot-area-margin-top="60"plot-area-margin-left="30"plot-area-margin-right="30"><igc-numeric-x-axisid="xAxis"name="xAxis"interval="40"minimum-value="-360"maximum-value="360"label-location="InsideBottom"label-top-margin="10"crossing-axis-name="yAxis"crossing-value="0"stroke-thickness="1"stroke="Black"></igc-numeric-x-axis><igc-numeric-y-axisid="yAxis"name="yAxis"minimum-value="-1.25"maximum-value="1.25"interval="0.25"label-location="InsideLeft"label-right-margin="10"crossing-axis-name="xAxis"crossing-value="0"stroke-thickness="1"stroke="Black"></igc-numeric-y-axis><igc-scatter-spline-seriesx-axis-name="xAxis"y-axis-name="yAxis"marker-type="Circle"x-member-path="X"y-member-path="sinValue"></igc-scatter-spline-series><igc-scatter-spline-seriesx-axis-name="xAxis"y-axis-name="yAxis"marker-type="Circle"x-member-path="X"y-member-path="cosValue"></igc-scatter-spline-series></igc-data-chart><div></div></div><!-- This script is needed only for parcel and it will be excluded for webpack -->
<% if (false) { %><scriptsrc="src/index.ts"></script><% } %>
</body></html>html
/* shared styles are loaded from: *//* https://static.infragistics.com/xplatform/css/samples */css
Recursos adicionales
Puede encontrar más información sobre las funciones de gráficos relacionadas en estos temas: