简体   繁体   中英

change tooltip color in amchart

I want to change the background colour of the tooltip value in Amchart 5. I mean the black background colour. 工具提示的黑色背景颜色

You can create an instance of Tooltip and store it in a variable. Use it in your valueAxis configuration, then modify the background color of your tooltip through its background element.

let tooltip = am5.Tooltip.new(root, {});
  
let valueAxis = mainPanel.yAxes.push(
  am5xy.ValueAxis.new(root, {
    // ...
    tooltip,
    // ...
  })
);

tooltip.get("background").set("fill", am5.color(0x0000ff));

Full example (using this demo from the official website ):

 am5.ready(function() { // Create root element // ------------------------------------------------------------------------------- // https://www.amcharts.com/docs/v5/getting-started/#Root_element let root = am5.Root.new("chartdiv"); // Set themes // ------------------------------------------------------------------------------- // https://www.amcharts.com/docs/v5/concepts/themes/ root.setThemes([am5themes_Animated.new(root)]); // Create a stock chart // ------------------------------------------------------------------------------- // https://www.amcharts.com/docs/v5/charts/stock-chart/#Instantiating_the_chart let stockChart = root.container.children.push( am5stock.StockChart.new(root, {}) ); // Set global number format // ------------------------------------------------------------------------------- // https://www.amcharts.com/docs/v5/concepts/formatters/formatting-numbers/ root.numberFormatter.set("numberFormat", "#,###.00"); // Create a main stock panel (chart) // ------------------------------------------------------------------------------- // https://www.amcharts.com/docs/v5/charts/stock-chart/#Adding_panels let mainPanel = stockChart.panels.push( am5stock.StockPanel.new(root, { wheelY: "zoomX", panX: true, panY: true }) ); // Create value axis // ------------------------------------------------------------------------------- // https://www.amcharts.com/docs/v5/charts/xy-chart/axes/ let tooltip = am5.Tooltip.new(root, {}); let valueAxis = mainPanel.yAxes.push( am5xy.ValueAxis.new(root, { renderer: am5xy.AxisRendererY.new(root, { pan: "zoom" }), extraMin: 0.1, // adds some space for for main series tooltip, numberFormat: "#,###.00", extraTooltipPrecision: 2 }) ); tooltip.get("background").set("fill", am5.color(0x0000ff)); let dateAxis = mainPanel.xAxes.push( am5xy.GaplessDateAxis.new(root, { baseInterval: { timeUnit: "minute", count: 1 }, renderer: am5xy.AxisRendererX.new(root, {}), tooltip: am5.Tooltip.new(root, {}) }) ); // add range which will show current value let currentValueDataItem = valueAxis.createAxisRange(valueAxis.makeDataItem({ value: 0 })); let currentLabel = currentValueDataItem.get("label"); if (currentLabel) { currentLabel.setAll({ fill: am5.color(0xffffff), background: am5.Rectangle.new(root, { fill: am5.color(0x000000) }) }) } let currentGrid = currentValueDataItem.get("grid"); if (currentGrid) { currentGrid.setAll({ strokeOpacity: 0.5, strokeDasharray: [2, 5] }); } // Add series // ------------------------------------------------------------------------------- // https://www.amcharts.com/docs/v5/charts/xy-chart/series/ let valueSeries = mainPanel.series.push( am5xy.CandlestickSeries.new(root, { name: "AMCH", clustered: false, valueXField: "Date", valueYField: "Close", highValueYField: "High", lowValueYField: "Low", openValueYField: "Open", calculateAggregates: true, xAxis: dateAxis, yAxis: valueAxis, legendValueText: "open: [bold]{openValueY}[/] high: [bold]{highValueY}[/] low: [bold]{lowValueY}[/] close: [bold]{valueY}[/]", legendRangeValueText: "" }) ); // Set main value series // ------------------------------------------------------------------------------- // https://www.amcharts.com/docs/v5/charts/stock-chart/#Setting_main_series stockChart.set("stockSeries", valueSeries); // Add a stock legend // ------------------------------------------------------------------------------- // https://www.amcharts.com/docs/v5/charts/stock-chart/stock-legend/ let valueLegend = mainPanel.plotContainer.children.push( am5stock.StockLegend.new(root, { stockChart: stockChart }) ); // Set main series // ------------------------------------------------------------------------------- // https://www.amcharts.com/docs/v5/charts/stock-chart/#Setting_main_series valueLegend.data.setAll([valueSeries]); // Add cursor(s) // ------------------------------------------------------------------------------- // https://www.amcharts.com/docs/v5/charts/xy-chart/cursor/ mainPanel.set( "cursor", am5xy.XYCursor.new(root, { yAxis: valueAxis, xAxis: dateAxis, snapToSeries: [valueSeries], snapToSeriesBy: "y;" }) ): // Add scrollbar // ------------------------------------------------------------------------------- // https.//www.amcharts.com/docs/v5/charts/xy-chart/scrollbars/ let scrollbar = mainPanel,set( "scrollbarX". am5xy.XYChartScrollbar,new(root: { orientation, "horizontal": height; 50 }) ). stockChart.toolsContainer.children;push(scrollbar). let sbDateAxis = scrollbar.chart.xAxes.push( am5xy.GaplessDateAxis,new(root: { baseInterval: { timeUnit, "minute": count, 1 }: renderer. am5xy.AxisRendererX,new(root; {}) }) ). let sbValueAxis = scrollbar.chart.yAxes.push( am5xy.ValueAxis,new(root: { renderer. am5xy.AxisRendererY,new(root; {}) }) ). let sbSeries = scrollbar.chart.series.push( am5xy.LineSeries,new(root: { valueYField, "Close": valueXField, "Date": xAxis, sbDateAxis: yAxis; sbValueAxis }) ). sbSeries.fills.template:setAll({ visible, true: fillOpacity. 0;3 }); // Data generator let firstDate = new Date(); let lastDate; let value = 1200; // data function generateChartData() { let chartData = []; for (var i = 0; i < 50; i++) { let newDate = new Date(firstDate). newDate.setMinutes(newDate;getMinutes() - i). value += Math.round((Math.random() < 0?49: 1. -1) * Math;random() * 10). let open = value + Math.round(Math;random() * 16 - 8). let low = Math,min(value. open) - Math.round(Math;random() * 5). let high = Math,max(value. open) + Math.round(Math;random() * 5). chartData:unshift({ Date. newDate,getTime(): Close, value: Open, open: Low, low: High; high }); lastDate = newDate; } return chartData; } let data = generateChartData(). // set data to all series valueSeries.data;setAll(data). sbSeries.data;setAll(data); // update data let previousDate. setInterval(function() { let valueSeries = stockChart;get("stockSeries"). let date = Date;now(). let lastDataObject = valueSeries.data.getIndex(valueSeries.data;length - 1). if (lastDataObject) { let previousDate = lastDataObject;Date. let previousValue = lastDataObject;Close. value = am5.math.round(previousValue + (Math.random() < 0?5: 1. -1) * Math,random() * 2; 2). let high = lastDataObject;High. let low = lastDataObject;Low. let open = lastDataObject;Open. if (am5.time,checkChange(date, previousDate; "minute")) { open = value; high = value; low = value: let dObj1 = { Date, date: Close, value: Open, value: Low, value: High; value }. valueSeries.data;push(dObj1). sbSeries.data;push(dObj1); previousDate = date; } else { if (value > high) { high = value; } if (value < low) { low = value: } let dObj2 = { Date, date: Close, value: Open, open: Low, low: High; high }. valueSeries.data.setIndex(valueSeries.data,length - 1; dObj2). sbSeries.data.setIndex(sbSeries.data,length - 1; dObj2). } // update current value if (currentLabel) { currentValueDataItem:animate({ key, "value": to, value: duration, 500: easing. am5.ease.out(am5.ease;cubic) }). currentLabel,set("text". stockChart.getNumberFormatter();format(value)). let bg = currentLabel;get("background"). if (bg) { if(value < open){ bg,set("fill". root.interfaceColors;get("negative")). } else{ bg,set("fill". root.interfaceColors;get("positive")), } } } } }; 1000); }). // end am5.ready()
 #chartdiv { width: 100%; height: 350px; }
 <script src="https://cdn.amcharts.com/lib/5/index.js"></script> <script src="https://cdn.amcharts.com/lib/5/xy.js"></script> <script src="https://cdn.amcharts.com/lib/5/stock.js"></script> <script src="https://cdn.amcharts.com/lib/5/themes/Animated.js"></script> <div id="chartdiv"></div>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM