使用javaScript写出k线图
时间: 2023-07-11 22:46:00 浏览: 54
以下是一个简单的JavaScript代码,用于绘制K线图:
```javascript
// 获取canvas元素
var canvas = document.getElementById('canvas');
var context = canvas.getContext('2d');
// 设置K线图的参数
var data = [
{open: 10, close: 15, high: 20, low: 8},
{open: 14, close: 13, high: 16, low: 11},
{open: 13, close: 10, high: 15, low: 8},
{open: 8, close: 10, high: 11, low: 6},
{open: 10, close: 12, high: 14, low: 8},
{open: 12, close: 9, high: 13, low: 7},
];
var width = canvas.width;
var height = canvas.height;
var padding = 20;
var barWidth = (width - padding * 2) / data.length;
var barPadding = 5;
// 绘制K线图
for (var i = 0; i < data.length; i++) {
var barX = padding + i * barWidth;
// 绘制上影线
context.beginPath();
context.moveTo(barX + barWidth / 2, (data[i].high - Math.min(data[i].open, data[i].close)) / (data[i].high - data[i].low) * (height - padding * 2) + padding);
context.lineTo(barX + barWidth / 2, (data[i].high - data[i].low) / (data[i].high - data[i].low) * (height - padding * 2) + padding);
context.strokeStyle = data[i].open > data[i].close ? 'green' : 'red';
context.stroke();
// 绘制实体
context.beginPath();
context.rect(barX + barPadding, data[i].open / (data[i].high - data[i].low) * (height - padding * 2) + padding, barWidth - barPadding * 2, (data[i].close - data[i].open) / (data[i].high - data[i].low) * (height - padding * 2));
context.fillStyle = data[i].open > data[i].close ? 'green' : 'red';
context.fill();
// 绘制下影线
context.beginPath();
context.moveTo(barX + barWidth / 2, (data[i].low - Math.min(data[i].open, data[i].close)) / (data[i].high - data[i].low) * (height - padding * 2) + padding);
context.lineTo(barX + barWidth / 2, (data[i].high - data[i].low) / (data[i].high - data[i].low) * (height - padding * 2) + padding);
context.strokeStyle = data[i].open > data[i].close ? 'green' : 'red';
context.stroke();
}
```
这段代码使用HTML5 Canvas绘制K线图。首先,定义了K线图的参数,包括数据、画布宽度、画布高度、内边距、K线条宽度和间距等。然后,使用for循环绘制每个K线条,分别绘制上影线、实体和下影线,并根据开盘价和收盘价的大小设置不同的颜色。最后,通过调用Canvas API中的方法绘制相应的图形。