Highcharts配置
之前已经将Highcharts的大致操作都讲了一遍,现在我来介绍下Highcharts的参数配置。
属性和事件
以下主要参考[参数配置](https://www.runoob.com/highcharts/highcharts-setting-detail.html)
chart.events.addSeries:添加数列到图表中。
//
// chart.events.click:整个图表的绘图区上所发生的点击事件。
//
// chart.events.load:图表加载事件。
//
// chart.events.redraw:图表重画事件,当点击图注显示和隐藏绘图时可以触发。
//
// chart.events.selection:当图表曲线可选择放大时,当选择图表操作时,可以触发该事件。
//
// chart.height:所绘制图表的高度值。
//
// chart.inverted:图表中的x,y轴对换。
//
// chart.polar:是否为极性图表。
//
// chart.reflow:当窗口大小改变时,图表宽度自适应窗口大小改变。
//
// chart.renderTo:图表加载的位置,是页面上的一个DOM对象。
//
// chart.showAxes:在空白图表中,是否显示坐标轴。
//
// chart.type:图表的类型,默认为line,还有bar/column/pie……
//
// chart.width:图表绘图区的宽度,默认为自适应。
//
// chart.zoomType:图表中数据报表的放大类型,可以以X轴放大,或是以Y轴放大,还可以以XY轴同时放大。
//
// colors:图表中多数列时,各数列之间的颜色。是一个数组,一般不动。
//
// credits.enabled:是否允许显示版权信息。
//
// credits.href:版权所有的链接。
//
// credits.text:版权信息显示文字。
//
// exporting.buttons.exportButton.enabled:是否允许显示导出按钮。
//
// exporting.buttons.exportButton.menuItems:导出按钮的菜单选项。
//
// exporting.buttons.exportButton.onclick:导出按钮被点击的事件,不是内部的菜单。
//
// exporting.buttons.printButton.enabled:是否允许打印按钮。
//
// exporting.buttons.printButton.onclick:打印按钮的点击事件。
//
// exporting.enabled:打印和导出按钮是否被允许。
//
// exporting.filename:被导出文件的文件名。
//
// exporting.type:默认导出图片的文件格式。
//
// exporting.url:SVG图表转换并导出的接口处理地址。
//
// exporing.width:默认导出图片的宽度。
//
// labels:标签,可以加载到图表的任何位置,里面有items,style。
//
// lang:语言参数配置,与导出按钮菜单有关的配置,时间名称的配置等。
//
// legend.enabled:是否允许图注。
//
// navigation.buttonOptions.enabled:图表中所有导航中的按钮是否可被点击。
//
// plotOptions.area.allowPointSelect:是否允许数据点的点击。
//
// plotOptions.area.color:绘图的颜色。
//
// plotOptions.area.dataLabels.enabled:是否允许数据标签。
//
// plotOptions.area.enableMouseTracking:是否允许数据图表中,数据点的鼠标跟踪气泡显示。
//
// plotOptions.area.events.checkboxClick:数据图表中图注中复选框的点击事件。
//
// plotOptions.area.events.click:数据图表中,数据点的点击事件。
//
// plotOptions.area.events.hide:数据图表中,某一数据序列隐藏时的事件。
//
// plotOptions.area.events.show:数据图表中,某一数据序列显示时的事件。
//
// plotOptions.area.events.legendItemClick:数据图表中,图注中的项目被点击时的事件,直接赋值false,则不可点击。
//
// plotOptions.area.events.mouseOut:数据点的鼠标移出事件。
//
// plotOptions.area.events.mouseOver:数据点的鼠标经过事件。
//
// plotOptions.area.marker.enabled:图表中绘图中是否显示点的标记符。
//
// plotOptions.area.marker.states.hover.enabled:是否允许标记符的鼠标经过状态。
//
// plotOptions.area.marker.states.select.enabled:是否允许标记符的选择状态。
//
// plotOptions.area.point.events.click:图表中每一个单独的点点击事件。
//
// plotOptions.area.point.events.mouseOut
//
// plotOptions.area.point.events..mouseOver
//
// plotOptions.area.point.events.remove:删除图表中的点时的事件。
//
// plotOptions.area.point.events.select:图表中点选择事件。
//
// plotOptions.area.point.events.unselect:图表中点取消选择时的事件。
//
// plotOptions.area.point.events.update:图表中数据发生更新时的事件。
//
// plotOptions.area.visible:加载时,数据序列默认是显示还是隐藏。
//
// plotOptions.area.zIndex:在多序列的情况下,调整每一个序列的层叠顺序。
//
// 以上的point.events同样还适用于其他面积类图表(arearange、areaspline、areasplinerange),其他的柱状图(bar、column)及所有图表。
//
// plotOptions.area.showInLegend:是否在图注中显示。
//
// plotOptions.area.stacking:是以值堆叠,还是以百分比堆叠。
//
// plotOptions.area.states.hover.enabled:鼠标放上的状态是否允许。
//
// plotOptions.area.stickyTracking:鼠标粘性跟踪数据点。
//
// plotOptions.arearange,plotOptions.areaspline,plotOptions.areasplinerange类同于plotOptions.area
//
// plotOptions.bar.groupPadding:对于柱状图分组,每个分组之间的间隔。
//
// plotOptions.bar.grouping:是否对数据进行分组。
//
// plotOptions.bar.minPointLength::定义当point值为零时,点的最小长度为多少
//
// plotOptions.bar.showInLegend:是否在图注中显示。
//
// plotOptions.bar.stacking:是以值堆叠,还是以百分比堆叠(normal/percent)。
//
// plotOptions.column,plotOptions.columnrange类同于plotOptions.bar
//
// plotOptions.line的相关配置类似于plotOptions.area配置。
//
// plotOptions.pie.ignoreHiddenPoint:在饼状图中,某一个序列经图注点击隐藏后,整个饼状图是重新以100%分配,还是只在原图基础上隐藏,呈现一个缺口。
//
// plotOptions.pie.innerSize:绘制饼状图时,饼状图的圆心预留多大的空白。
//
// plotOptions.pie.slicedOffset:与allowPointSelect结合使用,当点被点击时,对应的扇区剥离,这个参数即配置离开的距离。
//
// plotOptions.pie的其他常用配置参数类同于plotOptions.area,plotOptions.scatter,plotOptions.series,plotOptions.spline的相关配置类似于plotOptions.area配置。
//
// series:是一个数组。
//
// series.data.color:某一个数据的颜色。
//
// series.data.dataLabels:序列中某一个数据的数据标签。
//
// series.data.events类同于plotOptions.area.point.events的相关配置。
//
// series.data.marker类同于plotOptions.area.marker的相关配置。
//
// series.data.name:配置数据点的名称。
//
// series.data.sliced:配置在饼图中,扇区的分离距离大小。
//
// series.data.x:点的x值。
//
// series.data.y:点的y值。
//
// series.name:数据序列的名称。
//
// series.stack:堆叠的分组索引。
//
// series.type:数据序列的展示类型。
//
// series.xAxis,series.yAxis:当使用多坐标轴时,指定某个数列对应哪个坐标轴。
//
// subtitle:配置图表的子标题。
//
// title:配置图表的标题。
//
// tooltip:配置图表中数据的气泡提示。
//
// tooltip.valueDecimals:允许的小数点位数。
//
// tooltip.percentageDecimals:允许百分比的小数点后位数。
//
// xAxis,yAxis配置设置坐标轴
//
// allowDecimals:坐标轴上是否允许小数。
//
// categories:是一个数组,坐标轴的分类。
//
// plotLines:绘制主线。
//
// tickColor:刻度颜色。
//
// tickInterval:刻度的步进值。
//
// labels.rotation:刻度标签旋转度数
绘图
Highcharts功能已经十分强大,但还是不够解决实际项目中遇到的所有问题,特别是当需要使用画布进行绘制的时候。所幸Highcharts作为图表库,其本质还是JavaScript所以在实际项目中,HTML、CSS和JavaScript同样适用于Highcharts。
另外对于Highcharts形成的图形有一点是需要强调的,Highcharts底层其实是二/三次贝塞尔曲线。贝塞尔曲线是应用于二维图形应用程序的数学曲线。 一般的矢量图形软件(包括Highcharts和ECharts)都是通过它来精确画出曲线,我们在绘图工具上看到的钢笔工也是如此。所以对于生成的曲线与曲线的交点要特别注意,除非是使用标准函数生成否则生成的其实是拟合曲线,可以作为参考但是对于十分精准的测量建议慎用。
感兴趣的可以了解一下 可缩放矢量图形。
总结
前面在文章最后提到了不少的问题,现在我做下解释。
先上代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>demo2</title>
<script type="text/javascript" src="js/highcharts.js"></script>
<script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>
<script type="text/javascript" src="js/data.js"></script>
<script type="text/javascript">
$(function () {
//图表构造函数Highcharts.Chart(),创建图表
var chart = Highcharts.chart('container', {
chart: {
type: 'scatter'
},
series: [{
data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
},{
data:[]
}]
}/*,function(chart) {
var pointIndex = 0, //点索引
//数据列上点坐标
point = chart.series[0].points[pointIndex],
x = point.plotX + chart.plotLeft,
y = point.plotY + chart.plotTop;
// x = point.plotX,
// y = point.plotY
//绘制路径
chart.renderer.path([
'M', //移动
x,
chart.plotTop + chart.plotHeight,
'L', //划线
x,
y,
chart.plotLeft + chart.plotWidth,
y
])
.attr({ //属性
stroke: 'red', //行程颜色
'stroke-width': 1, //行程宽度
dashstyle: 'longdash' //样式
})
.add(); //添加
}*/);
var hasPlotLine = false,
$button = $('#button');
$('#button').click(function () {
var a = $('#XPoint').val();
var b = $('#YPoint').val();
var c = Number(a);
var d = Number(b);
if (!hasPlotLine) {
// 新增的点包含 x 和 y 值
chart.series[1].addPoint([c,d]);
/*chart.xAxis[0].addPlotLine({ //在x轴上增加
value:c, //在值为2的地方
width:2, //标示线的宽度为2px
color: '#000000', //标示线的颜色
id: 'plot-line-1', //标示线的id,在删除该标示线的时候需要该id标示
dashStyle:'longdashdot'
});*/
var pointIndex = 0;
// var group = this.renderer.g().add();
//数据列上点坐标
var point = chart.series[1].points[pointIndex],
x = point.plotX + chart.plotLeft,
y = point.plotY + chart.plotTop;
//绘制路径
lineRender = chart.renderer.path([
'M', //移动
x,
chart.plotTop + chart.plotHeight,
'L', //划线
x,
y,
chart.plotLeft , //+ chart.plotWidth,
// 0,
y
])
.attr({ //属性
stroke: 'red', //行程
'stroke-width': 1, //行程宽度
id: 'plot-line-1',
dashstyle: 'longdashdot' //样式
})
.add(); //添加
$button.html('删除标示线');
} else {
// chart.xAxis[0].removePlotLine('plot-line-1');
// chart.renderer.path()
// chart.series[1].removePoint(x,y);
chart.series[1].data[0].remove();
// chart.renderer.lineRender.remove();
lineRender.destroy();
$button.html('新增标示线');
}
// .hide();
hasPlotLine = !hasPlotLine;
});
});
</script>
</head>
<body>
<div id="container"></div>
<input type="number" id="XPoint" name="LastName" size="28">
<input type="number" id="YPoint" name="LastName" size="28">
<button id="button" class="autocompare" onclick="GetText()" >新增点</button>
</body>
</html>
效果图如下:
总结
之前提到的旋转“L”可以通过对绘图路径的x,y坐标进行测验得出结果,辅助线删除功能通过调用lineRender.destroy()方法进行销毁得出。
公司项目是暂时告一段落了,等有空我会把这段时间研究的相关项目代码放在GitHub上做学习参考。
来源:CSDN
作者:配剑江湖Ra
链接:https://blog.csdn.net/qq_38418687/article/details/103770384