- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当使用 gRaphael 沿 x 轴使用毫秒绘制折线图时,我通常会在数据点的位置上出现不一致。最常见的初始数据点位于 y 轴的左侧(如下面的 fiddle 所示),有时最后的数据点将超出 View 框的右侧/超过 x 轴的终止点.
有谁知道:1)为什么会这样,2) 如何预防,&/或3) 如何检查它(如果我知道它何时发生/发生了多少,我可以使用变换来移动线/点)。
我的代码:
var r = Raphael("holder"),
txtattr = { font: "12px sans-serif" };
var r2 = Raphael("holder2"),
txtattr2 = { font: "12px sans-serif" };
var x = [], y = [], y2 = [], y3 = [];
for (var i = 0; i < 1e6; i++) {
x[i] = i * 10;
y[i] = (y[i - 1] || 0) + (Math.random() * 7) - 3;
}
var demoX = [[1, 2, 3, 4, 5, 6, 7],[3.5, 4.5, 5.5, 6.5, 7, 8]];
var demoY = [[12, 32, 23, 15, 17, 27, 22], [10, 20, 30, 25, 15, 28]];
var xVals = [1288885800000, 1289929440000, 1290094500000, 1290439560000, 1300721700000, 1359499228000, 1359499308000, 1359499372000];
var yVals = [80, 76, 70, 74, 74, 78, 77, 72];
var xVals2 = [1288885800000, 1289929440000];
var yVals2 = [80, 76];
var lines = r.linechart(10, 10, 300, 220, xVals, yVals, { nostroke: false, axis: "0 0 1 1", symbol: "circle", smooth: true })
.hoverColumn(function () {
this.tags = r.set();
for (var i = 0, ii = this.y.length; i < ii; i++) {
this.tags.push(r.tag(this.x, this.y[i], this.values[i], 160, 10).insertBefore(this).attr([{ fill: "#fff" }, { fill: this.symbols[i].attr("fill") }]));
}
}, function () {
this.tags && this.tags.remove();
});
lines.symbols.attr({ r: 3 });
var lines2 = r2.linechart(10, 10, 300, 220, xVals2, yVals2, { nostroke: false, axis: "0 0 1 1", symbol: "circle", smooth: true })
.hoverColumn(function () {
this.tags = r2.set();
for (var i = 0, ii = this.y.length; i < ii; i++) {
this.tags.push(r.tag(this.x, this.y[i], this.values[i], 160, 10).insertBefore(this).attr([{ fill: "#fff" }, { fill: this.symbols[i].attr("fill") }]));
}
}, function () {
this.tags && this.tags.remove();
});
lines2.symbols.attr({ r: 3 });
我确实必须使用 gRaphael 并且 x 轴必须以毫秒为单位(稍后用自定义日期字符串标记)
主要示例 fiddle :http://jsfiddle.net/kcar/aNJxf/
第二个示例 fiddle (页面上的第 4 个示例经常显示两个轴错误): http://jsfiddle.net/kcar/saBnT/
根本原因是 snapEnds 函数(第 718 行 g.raphael.js),它所做的四舍五入虽然在某些情况下很好,但在其他情况下是从日期中添加或减去年份。
在这一点之后还没有完全完成,但由于每次舍入变得疯狂时数据点都放错了位置,而不是当它不疯狂时,我将继续并假设这会导致计算问题图表列,也在发送到 snapEnds 之前,这些值是正确的,只是为了确认它不仅仅是接收计算错误的数据。
来自 g.raphael.js 的函数代码
snapEnds: function(from, to, steps) {
var f = from,
t = to;
if (f == t) {
return {from: f, to: t, power: 0};
}
function round(a) {
return Math.abs(a - .5) < .25 ? ~~(a) + .5 : Math.round(a);
}
var d = (t - f) / steps,
r = ~~(d),
R = r,
i = 0;
if (r) {
while (R) {
i--;
R = ~~(d * Math.pow(10, i)) / Math.pow(10, i);
}
i ++;
} else {
if(d == 0 || !isFinite(d)) {
i = 1;
} else {
while (!r) {
i = i || 1;
r = ~~(d * Math.pow(10, i)) / Math.pow(10, i);
i++;
}
}
i && i--;
}
t = round(to * Math.pow(10, i)) / Math.pow(10, i);
if (t < to) {
t = round((to + .5) * Math.pow(10, i)) / Math.pow(10, i);
}
f = round((from - (i > 0 ? 0 : .5)) * Math.pow(10, i)) / Math.pow(10, i);
return { from: f, to: t, power: i };
},
最佳答案
从 snapEnds 中删除了舍入废话,没有更多问题,没有注意到任何轴或图表的任何其他区域的任何缺点。如果你看到一个,我很想听听。
现在来自 g.raphael.js 的函数代码:
snapEnds: function(from, to, steps) {
return {from: from, to: to, power: 0};
},
关于javascript - gRaphael linechart 绘制超出轴的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14690029/
我使用 gRaphael 图表库创建了一个水平条形图。我想增加栏之间的间距。有办法做到这一点吗? 最佳答案 嗯,据我所知,没有一种方法可以增加间距,但您可以通过在初始化期间操纵装订线值来实现。 参见:
我一直在使用 gRaphaël图表已经有几周了,我时不时会遇到一些奇怪的问题。一个反复出现的主题是饼图图例标签都在错误的地方挤在一起。图片>文字: 图表是按照您的预期创建的,在这种情况下: var r
我有一个页面,其中有 2 个使用 gRaphael 生成的饼图。我还使用几个插件从这些论文中创建一个 .png。我的问题是,不管它总是使用第一张纸,即使我使用了正确的引用(即图像总是第一张图,即使我为
据我所知,gRaphael仅支持4个位置来放置弹出窗口,上、下、左和右,通常这就足够了,但是我的折线图空间有限,因此弹出窗口在 SVG 内部被切断。我的问题是,如何将弹出窗口放置在右上(右上角)、左上
我一直在尝试不同的基于 JavaScript 的图表选项。我喜欢 Highcharts,但也想看看 gRaphael。我发现确实缺少 gRaphael 文档并且 the efforts of kenn
我要放大gRaphael pie chart在某些事件之后,例如单击。但是 gRaphael 饼图是在静态宽度和高度的窗口加载后创建的。是否可以实时动态重绘? 我的代码: var myRadius;
我遇到了 gRaphael javascript 折线图库的问题。 我正在从一个包含五列(分钟数、时间、等待时间、治疗中、关闭、就位)的 CSV 文件构建折线图。 以前我已经能够在没有动画的情况下绘制
我有一个用 gRaphael 创建的折线图。它有轴和刻度线,但我想要网格线。是否有内置的方法来实现这一点或可以帮助我的附加库? 最佳答案 gRaphael 没有添加网格线的内置方法,但绘制它们非常容易
我有一个由 graphael 创建的饼图 this.element = this.raphHolder.piechart(100, 100, 100, data,{legend : legende})
我正在使用 graphael 为我的数据绘制条形图,但不知道如何为条形图添加标签。 var r = Raphael(element); r.hbarchart(10, 20, 500, 220, ba
当使用 gRaphael 沿 x 轴使用毫秒绘制折线图时,我通常会在数据点的位置上出现不一致。最常见的初始数据点位于 y 轴的左侧(如下面的 fiddle 所示),有时最后的数据点将超出 View 框
我在 graphael 上使用折线图。我的数据点是日期,图形无法识别它们。所以我用 1,2,3 .... 表示每个日期。 事实上,我需要在图表中显示日期,作为 x 轴标签。我怎样才能做到这一点?我尝试
我正在使用 gRaphael 实现实时更新线图这是 Raphael 的图形扩展SVG 库。 我似乎找不到任何人将此作为近实时更新项目的示例,这很好。我假设有一种方法可以使用新数据集在图形上调用刷新(无
我正在尝试使用 gRaphael 绘制两个饼图,如下所示: var r = new Raphael(0, 0, '100%', '100%'); r.piechart(100,120,80,[60,4
我正在使用可用的相同代码 here ,在我的 Xampp 服务器上。 我只通过这个更改了 3 个脚本行: 但是当我这样做时,Chrome 会返回这条消息: GET http://raphaelj
我想知道如何制作一个简单的条形图,它可能以天为 x 轴,值为“今天”和“昨天”,y 轴可能为“时间”,相应的值为“1”和“2” '。我想我对如何将文本设置为 x 轴的值、如何显示 y 轴以及 r.g.
我尝试在 gRaphael 中创建一个非常简单的折线图。我的问题是图表的第一个值始终位于 y 轴上。有没有办法向第一个点添加填充或偏移量,使其不在 y 轴上? 我尝试过的一个解决方案是添加另一组 x
我最近开始使用 gRaphael 来满足我的绘图需求,到目前为止给我留下了深刻的印象。但是,我在制作折线图时遇到了一些困难,特别是当我尝试将 X 轴的值设置为日期时,该图无法呈现。我生成图表的代码是:
我希望创建一个 y 轴从 0 开始的图形。但是我的值都不是 0。我该如何在 graphael 中做到这一点? 作为扩展,我如何创建一个图表,其 y 轴的最大值比方说是所提供数据中最大值的两倍? 最佳答
我想在 graphael 图表中使用日期,如下所示。 var lines = r.linechart(30, 30, 600, 440, [ [01 / 01 / 2014 12: 00: 0
我是一名优秀的程序员,十分优秀!