要自定义Highcharts的legend中,每个系列名字前的图标(symbol)的样式,除了在初始化图时使用官方提供的有限的参数,还可以重写Highcharts.seriesTypes[type].prototype.drawLegendSymbol这个函数。type是图的类型,函数会传入两个参数,分别是legend和item。
官方默认的的Area图的drawLegendSymbol函数如下:
/** * Get the series' symbol in the legend * * @param {Object} legend The legend object * @param {Object} item The series (this) or point */ drawLegendSymbol: function (legend, item) { item.legendSymbol = this.chart.renderer.rect( 0, //方块的左上角点的x坐标 legend.baseline - 11, //方块的左上角点的y坐标 legend.options.symbolWidth, // 这个就是chart初始化参数中legend里设置的symbolWidth属性,是方块的宽 12, // 是方块的高 2 // 圆角的半径 ).attr({ zIndex: 3 }).add(item.legendGroup); }
假如修改了方块左上角点的x位置,那么为了不让方块覆盖到文字上,则初始化chart时,legend对象的symbolPadding属性也要做对应的设置。例如:
左上角点是0 + 20,则symbolPadding要设置也成20。
官方代码中的另外一个函数:
/** * Get the series' symbol in the legend. This method should be overridable to create custom * symbols through Highcharts.seriesTypes[type].prototype.drawLegendSymbol.注意:官方注释写错了,写成了drawLegendSymbols,多了一个s * * @param {Object} legend The legend object */ drawLegendSymbol: function (legend) { var options = this.options, markerOptions = options.marker, radius, legendOptions = legend.options, legendSymbol, symbolWidth = legendOptions.symbolWidth, renderer = this.chart.renderer, legendItemGroup = this.legendGroup, baseline = legend.baseline, attr; // Draw the line if (options.lineWidth) { attr = { 'stroke-width': options.lineWidth }; if (options.dashStyle) { attr.dashstyle = options.dashStyle; } this.legendLine = renderer.path([ M, 0, baseline - 4, L, symbolWidth, baseline - 4 ]) .attr(attr) .add(legendItemGroup); } // Draw the marker if (markerOptions && markerOptions.enabled) { radius = markerOptions.radius; this.legendSymbol = legendSymbol = renderer.symbol( this.symbol, (symbolWidth / 2) - radius, baseline - 4 - radius, 2 * radius, 2 * radius ) .add(legendItemGroup); } }
drawLegendSymbol函数中定义的radius属性,会在Legend.propotype中的colorizeItem函数中被覆盖掉:
/** * Set the colors for the legend item * @param {Object} item A Series or Point instance * @param {Object} visible Dimmed or colored */ colorizeItem: function (item, visible) { var legend = this, options = legend.options, legendItem = item.legendItem, legendLine = item.legendLine, legendSymbol = item.legendSymbol, hiddenColor = legend.itemHiddenStyle.color, textColor = visible ? options.itemStyle.color : hiddenColor, symbolColor = visible ? item.color : hiddenColor, markerOptions = item.options && item.options.marker, symbolAttr = { stroke: symbolColor, fill: symbolColor }, key, val; if (legendItem) { legendItem.css({ fill: textColor }); } if (legendLine) { legendLine.attr({ stroke: symbolColor }); } if (legendSymbol) { // Apply marker options if (markerOptions) { markerOptions = item.convertAttribs(markerOptions); for (key in markerOptions) { val = markerOptions[key]; if (val !== UNDEFINED) { symbolAttr[key] = val; } } } legendSymbol.attr(symbolAttr); // 这句执行完之后,会给legendSymbol这个对象添加 r=4 这个值,就会影响symbol的圆角。 }
上面函数中的markerOptions = item.options && item.options.marker这句,给markerOptions赋值,它的值是:
markerOptions : { enabled: false, lineColor: "#FFFFFF", lineWidth: 0, radius: 4,// 这个用这个值,给legendSymbol对象增加了r=4的属性,导致最终生成的SVGElement对象的rx,ry都设置成4,出现了圆角。 states: Object }
这些值来自chart初始化参数plotOptions的series的marker属性。
相关推荐
A utility designed to make it much easier to create custom legend labels based on the data contained in the attribute table of a feature layer. http://www.maplogic.com/
总之,通过C#编程,我们可以克服WinForms Chart控件默认功能的限制,自定义实现Legend的选中功能,为用户提供更加交互性的图表体验。在实际开发过程中,理解控件的工作原理,熟练掌握事件处理和坐标转换是实现此类...
### Hightcharts 案例 图表 报表 #### 一、Highcharts 简介 Highcharts 是一种基于 JavaScript 的开源图表库,广泛应用于 Web 开发领域以实现动态图表展示的功能。它具备以下几个特点: 1. **简单易用**:...
4. **样式调整**:为了适应分页,可能需要修改 legend 的样式,如按钮的样式、间距等,以保持整体视觉效果的一致性。 5. **API 扩展**:为了让用户能够配置和控制 legend 分页,可能需要扩展 ECharts 的 API,例如...
此外,`Legend`属性用于设置图例,可以调整其位置、样式和内容。 在描述中提到的“显示多种图例”,这通常涉及到多个数据系列和对应的图例。我们可以通过`Series.Add()`方法添加新的数据系列,并分别设置每个系列的...
例如,在某些情况下,用户可能希望改变图例的样式、位置或者内容等,这就需要开发者提供相应的自定义功能。 #### 二、技术栈与环境 本教程将基于以下技术栈: - **开发语言**:C# - **开发环境**:Visual Studio ...
它会创建一个文本符号,其符号在Symbol的上方,并添加该符号的定义以及在画板下有任何overrides的overrides 。 请注意,只有在SymbolInstance上将其override ,它才会添加override 。 功能请求和拉取请求非常受欢迎...
在实际应用中,你可能还需要考虑其他高级特性,如工具提示(tooltip)、图例(legend)、缩放和滚动(navigator和scrollbar)、数据加载事件等。Highcharts提供丰富的API和插件,可以满足大多数复杂的图表需求。 ...
其中,字符串 1、字符串 2、字符串 3 等是注释信息,参数是用于控制注释视窗的位置和样式的参数。 参数的含义 参数字符串的含义如下所示: * 0:尽量不与数据冲突,自动放置在最佳位置 * 1:放置在图形的右上角 *...
flash builder建的actionscript项目,flash chart,现实了legend交互,多数据提示,双轴坐标,格式化坐标显示(可带单位),piechart,linechart,columnchart,combinechart(混合图表)
此外,`chartist-plugin-legend`还支持更多的自定义配置,例如,你可以改变图例项的样式,如颜色、字体大小等,还可以通过监听事件来实现更复杂的交互效果。通过深入阅读插件文档,开发者可以根据实际需求调整和扩展...
4. **配置Legend**:我们可以调整Legend的样式,例如字体、大小、颜色等,通过`LegendClass`的属性进行设置。还可以控制图例的展开/折叠状态,以及是否显示子图层。 5. **创建Layout View**:一旦Map Control和...
legend 图例组件可以分组展示。详细说明:https://blog.csdn.net/qq_36437172/article/details/106125254
此外,`Measure`还支持自定义样式和事件处理,如`on('measure-end')`,以便在测量完成后执行特定操作。 三、图例(Legend) 图例是地图的重要组成部分,它解释了地图上颜色、符号和图案的含义。在ArcGIS JS API 4.x...
### Legend在MATLAB中的部分标注问题详解 #### 引言 在进行数据分析和可视化时,图例(Legend)是图表中不可或缺的一部分,它能够帮助读者理解图表中的各个数据系列所代表的意义。MATLAB作为一种广泛使用的科学...
4. **可自定义样式**:可以设置图例的字体、颜色、边框等属性,以匹配整个图形的风格。 在`test_legend.m`这个脚本文件中,我们可以预期看到如何使用`gridlegend`的实例。通常,这样的代码会包含以下步骤: 1. 创建...
Legend文件传送软件是运行在Linux下的一款自由软件,它提供了在linux环境下局域网文件传送的方法,目前次版本支持多个文件同时传送接收,添加临时用户,修改用户个性头像,修改自己昵称的功能。在软使用方面,以用户...
Legend文件传送软件是运行在Linux下的一款自由软件,它提供了在linux环境下局域网文件传送的方法,目前次版本支持多个文件同时传送接收,添加临时用户,修改用户个性头像,修改自己昵称的功能。在软使用方面,以用户...
在MATLAB编程环境中,"legend1m"是一个用于创建和控制图形图例的自定义函数。这个函数的设计目的是为了更灵活地调整图例中的行和文本项,提供比MATLAB内置`legend`函数更为精细的控制。下面我们将深入探讨与这个主题...
开发者可以使用HTML5的新特性,如`<fieldset>`和`<legend>`来组织问题组,`<input>`标签来创建各种类型的输入控件,如单选框、多选框或文本输入框,以及`<button>`来设置提交或重置问卷的按钮。 其次,JavaScript...