把纵轴刻度用两种颜色画出来。股票中有些图纵轴刻度标签会以昨收为中心,上下分为红绿两种颜色。Flotr有K线图,但轴不能设两种颜色,稍微改下就可以了。
改后的配置方法:
var options = {
title: "熊猫烟花",
colors: ['#C0D800', '#00A8F0', '#CB4B4B', '#4DA74D', '#9440ED'],
xaxis: {ticks: json.ticks},
yaxis:{ ticks: [1,2,3, 4,5,6, 7],//刻度,假数据,会分两种颜色
close:4, //昨收,做为中线
downcolor:'#00FF00',//下面颜色
upcolor:'#FF0000'//上面颜色
//其它配置略
}
};
添加了close,downcolor,upcolor配置。修改原来的drawLabels函数,添加十来行代码。通常不想改下载下来的Flotr源码,只要在画图前执行了下面代码就行了。下面代码是把drawLabels函数拿出来改了下,在画图前执行了会替换原函数。
Flotr.Graph.implement({
drawLabels: function(){
// Construct fixed width label boxes, which can be styled easily.
var noLabels = 0, axis,
xBoxWidth, i, html, tick, left, top,
options = this.options,
ctx = this.ctx,
a = this.axes;
for(i = 0; i < a.x.ticks.length; ++i){
if (a.x.ticks[i].label) {
++noLabels;
}
}
xBoxWidth = this.plotWidth / noLabels;
if (options.grid.circular) {
ctx.save();
ctx.translate(this.plotOffset.left+this.plotWidth/2, this.plotOffset.top+this.plotHeight/2);
var radius = this.plotHeight*options.radar.radiusRatio/2 + options.fontSize,
sides = this.axes.x.ticks.length,
coeff = 2*(Math.PI/sides),
angle = -Math.PI/2;
var style = {
size: options.fontSize
};
// Add x labels.
axis = a.x;
style.color = axis.options.color || options.grid.color;
for(i = 0; i < axis.ticks.length && axis.options.showLabels; ++i){
tick = axis.ticks[i];
tick.label += '';
if(!tick.label || tick.label.length == 0) continue;
var x = Math.cos(i*coeff+angle) * radius,
y = Math.sin(i*coeff+angle) * radius;
style.angle = Flotr.toRad(axis.options.labelsAngle);
style.valign = 'm';
style.halign = (Math.abs(x) < 0.1 ? 'c' : (x < 0 ? 'r' : 'l'));
ctx.drawText(tick.label, x, y, style);
}
// Add y labels.
axis = a.y;
style.color = axis.options.color || options.grid.color;
for(i = 0; i < axis.ticks.length && axis.options.showLabels; ++i){
tick = axis.ticks[i];
tick.label += '';
if(!tick.label || tick.label.length == 0) continue;
style.angle = Flotr.toRad(axis.options.labelsAngle);
style.valign = 'm';
style.halign = 'l';
ctx.drawText(tick.label, 3, -(axis.ticks[i].v / axis.max) * (radius - options.fontSize), style);
}
ctx.restore();
return;
}
if (!options.HtmlText && this.textEnabled) {
var style = {
size: options.fontSize,
adjustAlign: true
};
// Add x labels.
axis = a.x;
style.color = axis.options.color || options.grid.color;
for(i = 0; i < axis.ticks.length && axis.options.showLabels && axis.used; ++i){
tick = axis.ticks[i];
if(!tick.label || tick.label.length == 0) continue;
left = axis.d2p(tick.v);
if (left < 0 || left > this.plotWidth) continue;
style.angle = Flotr.toRad(axis.options.labelsAngle);
style.halign = 'c';
style.valign = 't';
ctx.drawText(
tick.label,
this.plotOffset.left + left,
this.plotOffset.top + this.plotHeight + options.grid.labelMargin,
style
);
}
// Add x2 labels.
axis = a.x2;
style.color = axis.options.color || options.grid.color;
for(i = 0; i < axis.ticks.length && axis.options.showLabels && axis.used; ++i){
tick = axis.ticks[i];
if(!tick.label || tick.label.length == 0) continue;
left = axis.d2p(tick.v);
if(left < 0 || left > this.plotWidth) continue;
style.angle = Flotr.toRad(axis.options.labelsAngle);
style.halign = 'c';
style.valign = 'b';
ctx.drawText(
tick.label,
this.plotOffset.left + left,
this.plotOffset.top + options.grid.labelMargin,
style
);
}
// Add y labels.
axis = a.y;
style.color = axis.options.color || options.grid.color;
for(i = 0; i < axis.ticks.length && axis.options.showLabels && axis.used; ++i){
tick = axis.ticks[i];
if (!tick.label || tick.label.length == 0) continue;
top = axis.d2p(tick.v);
if(top < 0 || top > this.plotHeight) continue;
style.angle = Flotr.toRad(axis.options.labelsAngle);
style.halign = 'r';
style.valign = 'm';
ctx.drawText(
tick.label,
this.plotOffset.left - options.grid.labelMargin,
this.plotOffset.top + top,
style
);
}
// Add y2 labels.
axis = a.y2;
style.color = axis.options.color || options.grid.color;
for(i = 0; i < axis.ticks.length && axis.options.showLabels && axis.used; ++i){
tick = axis.ticks[i];
if (!tick.label || tick.label.length == 0) continue;
top = axis.d2p(tick.v);
if(top < 0 || top > this.plotHeight) continue;
style.angle = Flotr.toRad(axis.options.labelsAngle);
style.halign = 'l';
style.valign = 'm';
ctx.drawText(
tick.label,
this.plotOffset.left + this.plotWidth + options.grid.labelMargin,
this.plotOffset.top + top,
style
);
ctx.save();
ctx.strokeStyle = style.color;
ctx.beginPath();
ctx.moveTo(this.plotOffset.left + this.plotWidth - 8, this.plotOffset.top + axis.d2p(tick.v));
ctx.lineTo(this.plotOffset.left + this.plotWidth, this.plotOffset.top + axis.d2p(tick.v));
ctx.stroke();
ctx.restore();
}
}
else if (a.x.options.showLabels || a.x2.options.showLabels || a.y.options.showLabels || a.y2.options.showLabels) {
html = ['<div style="font-size:smaller;color:' + options.grid.color + ';" class="flotr-labels">'];
// Add x labels.
axis = a.x;
if (axis.options.showLabels){
for(i = 0; i < axis.ticks.length; ++i){
tick = axis.ticks[i];
if(!tick.label || tick.label.length == 0 ||
(this.plotOffset.left + axis.d2p(tick.v) < 0) ||
(this.plotOffset.left + axis.d2p(tick.v) > this.canvasWidth)) continue;
html.push('<div style="position:absolute;top:' + (this.plotOffset.top + this.plotHeight + options.grid.labelMargin) + 'px;left:' + (this.plotOffset.left +axis.d2p(tick.v) - xBoxWidth/2) + 'px;width:' + xBoxWidth + 'px;text-align:center;'+(axis.options.color?('color:'+axis.options.color+';'):'')+'" class="flotr-grid-label">' + tick.label + '</div>');
}
}
// Add x2 labels.
axis = a.x2;
if (axis.options.showLabels && axis.used){
for(i = 0; i < axis.ticks.length; ++i){
tick = axis.ticks[i];
if(!tick.label || tick.label.length == 0 ||
(this.plotOffset.left + axis.d2p(tick.v) < 0) ||
(this.plotOffset.left + axis.d2p(tick.v) > this.canvasWidth)) continue;
html.push('<div style="position:absolute;top:' + (this.plotOffset.top - options.grid.labelMargin - axis.maxLabel.height) + 'px;left:' + (this.plotOffset.left + axis.d2p(tick.v) - xBoxWidth/2) + 'px;width:' + xBoxWidth + 'px;text-align:center;'+(axis.options.color?('color:'+axis.options.color+';'):'')+'" class="flotr-grid-label">' + tick.label + '</div>');
}
}
// Add y labels.
axis = a.y;
if (axis.options.showLabels){
var temp = axis.options.color;
for(i = 0; i < axis.ticks.length; ++i){
tick = axis.ticks[i];
//
if(axis.options.close > tick.v) {
axis.options.color = axis.options.downcolor;
}else if(axis.options.close < tick.v){
axis.options.color = axis.options.upcolor ;
}else{
axis.options.color = temp;
}
if (!tick.label || tick.label.length == 0 ||
(this.plotOffset.top + axis.d2p(tick.v) < 0) ||
(this.plotOffset.top + axis.d2p(tick.v) > this.canvasHeight)) continue;
html.push('<div style="position:absolute;top:' + (this.plotOffset.top + axis.d2p(tick.v) - axis.maxLabel.height/2) + 'px;left:0;width:' + (this.plotOffset.left - options.grid.labelMargin) + 'px;text-align:right;'+(axis.options.color?('color:'+axis.options.color+';'):'')+'" class="flotr-grid-label">' + tick.label + '</div>');
}
axis.options.color = temp;
}
// Add y2 labels.
axis = a.y2;
if (axis.options.showLabels && axis.used){
ctx.save();
ctx.strokeStyle = axis.options.color || options.grid.color;
ctx.beginPath();
for(i = 0; i < axis.ticks.length; ++i){
tick = axis.ticks[i];
if(axis.options.close > tick.v) {
axis.options.color = axis.options.downcolor;
}else if(axis.options.close < tick.v){
axis.options.color = axis.options.upcolor ;
}else{
axis.options.color = ctx.strokeStyle;
}
if (!tick.label || tick.label.length == 0 ||
(this.plotOffset.top + axis.d2p(tick.v) < 0) ||
(this.plotOffset.top + axis.d2p(tick.v) > this.canvasHeight)) continue;
html.push('<div style="position:absolute;top:' + (this.plotOffset.top + axis.d2p(tick.v) - axis.maxLabel.height/2) + 'px;right:0;width:' + (this.plotOffset.right - options.grid.labelMargin) + 'px;text-align:left;'+(axis.options.color?('color:'+axis.options.color+';'):'')+'" class="flotr-grid-label">' + tick.label + '</div>');
ctx.moveTo(this.plotOffset.left + this.plotWidth - 8, this.plotOffset.top + axis.d2p(tick.v));
ctx.lineTo(this.plotOffset.left + this.plotWidth, this.plotOffset.top + axis.d2p(tick.v));
}
ctx.stroke();
ctx.restore();
}
html.push('</div>');
this.el.appendHTML(html.join(''));
}
}
});
分享到:
相关推荐
通过Flotr2,你可以轻松地调整颜色、样式、标记、轴刻度和标签,以适应不同的数据展示需求。 在性能方面,Flotr2优化了渲染过程,使其能够在大量数据集上运行流畅。它使用HTML5的Canvas元素进行绘制,确保了良好的...
Flotr2还提供了丰富的配置选项,比如你可以改变颜色、字体、轴的范围和刻度,甚至可以添加自定义的工具提示和图例。 总之,“flotr2实例+文档”是一个全面的学习资源,无论你是初学者还是经验丰富的开发者,都能...
6. **颜色和样式**:用户可以控制图表的颜色方案,线条样式,填充颜色等,以满足设计需求。 7. **动画效果**:Flotr2可以为图表的更新和变化添加平滑的动画效果,使视觉表现更加生动。 在实际应用中,为了使用...
4. **自定义**:Flotr2允许开发者自定义图表的各个方面,包括颜色、字体、轴的刻度、图例、标题、背景等。此外,还可以设置数据点的形状、大小、标记样式等,以满足不同设计需求。 5. **性能优化**:Flotr2针对大量...
在例子中,开发者可能会看到如何设置数据、选择图表类型、配置颜色、设置轴刻度以及添加图例等步骤。通过学习这个例子,初学者可以快速理解Flotr2的基本用法,并将其应用到自己的项目中。 **官方Demo地址** Flotr2...
Flotr2提供了大量的配置选项,允许你定制图表的各个方面,如颜色、轴、网格、图例等。例如,你可以更改轴的标签、范围和刻度,或者调整图表的背景色: ```javascript var options = { xaxis: {min: 0, max: 4}, ...
一个JavaScript绘图和制表的图形类库,可以有效地帮助你绘制基于HTML5的图表和图形,包括线图、柱状图、饼图、气泡图等等,对于浏览器的兼容性...压缩包包含一份Flotr2.js和它的压缩版本Flotr2.min.js。可以放心下载。
本篇文章将详细介绍如何在Android中调用JavaScript库Flotr2来绘制这些图形。 Flotr2是一个强大的JavaScript图表库,它提供了丰富的图表类型和高度可定制的选项,使得在Web端绘制图表变得简单。在Android应用中,...
Flotr2 是一个用于绘制 HTML5 图形和图表的开源 JS 库,是 flotr 的分支,但移除了 Prototype 的依赖以及其他方面很多改进。
Flotr2 是一个用于绘制 HTML5 图形和图表的开源 JS 库,是 flotr 的分支,但移除了 Prototype 的依赖以及其他方面很多改进
使用Flotr,开发者可以通过简单的API调用来设置图形的属性,如颜色、数据点、轴标签等,从而创建出具有专业外观的图表。 总结来说,"flotr 0.2 Prototype 曲线图插件.zip" 提供了一种基于JavaScript和CSS3的技术...
flotr ,资源分 原本想设置0的,可是不知为何最小是1分,难道改革了么, /小纠结 /小纠结 /小纠结 /小纠结 /小纠结 /小纠结 /小纠结 /小纠结 /小纠结
Flotr,http://solutoire.com/flotr/ 一个基于Canvas的Javascript图形包, 兼容IE8+,Google Chrome,Firefox。 可实现类似Windows资源显示器的cpu,memory类动态资源图,包括Line, Pie, Bar chart等。
除了内置的图表类型,jqPlot还支持自定义插件,允许开发者扩展其功能,满足特定需求。你可以编写JavaScript代码来定义新的图表类型或修改现有行为。 **总结** jqPlot是一个强大的JavaScript绘图工具,它提供了丰富...
使用JavaScript实现不同常规的可视化 使用FLOTR2进行 数据可视化 编程
demo展示了android如何使用各种图表,其中包括折线图和饼图,图表类型有 echarts flotr2 highcharts jqplot四种,其中highcharts是收费的,echarts视频效果最棒,不过可能手机型号不同会出现些异常,比如背景变黑
Flotr - Flotr 是Prototype 1.6.0.2框架的javascript插件库。 Flotr帮助你在浏览器中创建图表,支持鼠标事件响应,放大缩小,CSS类型支持等。 PHP/SWF Charts - PHP/SWF 是一个简单支持web图表的强大工具,你能...
• Flotr - Flotr 是Prototype 1.6.0.2框架的javascript插件库。 Flotr帮助你在浏览器中创建图表,支持鼠标事件响应,放大缩小,CSS类型支持等。 PHP/SWF Charts - PHP/SWF 是一个简单支持web图表的强大工具,你...
比较优秀的JavaScript图表工具有Flotr JavaScript Plotting Library(Flotr)、Empriese JavaScript Charts(EJSChart)等。利用这些框架可以用很简单的语法实现美观的图表,支持大多数浏览器,并且具有丰富的图表...
6. **Flotr2**:Flotr2是一个轻量级的JavaScript图表库,基于HTML5 canvas,支持多种图表类型,如折线图、柱状图、饼图等,适合在Web应用中展示数据。 7. **JSON**:JSON(JavaScript Object Notation)是一种轻量...