- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个页面,其中有 2 个使用 gRaphael 生成的饼图。我还使用几个插件从这些论文中创建一个 .png。我的问题是,不管它总是使用第一张纸,即使我使用了正确的引用(即图像总是第一张图,即使我为第二张图做)。这是我的代码:
//make sure this element exists before creating pie chart
if(document.getElementById("hour_pie"))
{
//extract labels into gRaphael appropriate format
totalArry=new Array();
for(var key in hours_total)
{
totalArry.push(hours_total[key]);
}
//create canvas
var hourPaper = Raphael("hour_pie");
//create pie chart
var hourPie=hourPaper.piechart(
hourPaper.width/2, // pie center x coordinate
hourPaper.height/2, // pie center y coordinate
200, // pie radius
totalArry, // values
{
legend: hours_pie_labels
}
);
// hover animation
hourPie.hover(function () {
this.sector.stop();
this.sector.scale(1.1, 1.1, this.cx, this.cy);
if (this.label) {
this.label[0].stop();
this.label[0].attr({ r: 7.5 });
this.label[1].attr({ "font-weight": 800 });
}
}, function () {
this.sector.animate({ transform: 's1 1 ' + this.cx + ' ' + this.cy }, 500, "bounce");
if (this.label) {
this.label[0].animate({ r: 5 }, 500, "bounce");
this.label[1].attr({ "font-weight": 400 });
}
});
//on click of this img, convert canvas to .png and prompt download
$('.hour_download').click(function()
{
// turn svg into PNG
SVGtoPNG(hourPaper.toSVG(), "hourPieGraph");
});
}
if(document.getElementById("explosive_pie"))
{
//extract labels into gRaphael appropriate format
totalArry=new Array();
for(var key in explosive_totals)
{
totalArry.push(explosive_totals[key]);
}
//create canvas
var explosivePaper = Raphael("explosive_pie");
//create pie chart
var explosivePie=explosivePaper.piechart(
explosivePaper.width/2, // pie center x coordinate
explosivePaper.height/2, // pie center y coordinate
200, // pie radius
totalArry, // values
{
legend: explosive_pie_labels
}
);
// hover animation
explosivePie.hover(function () {
this.sector.stop();
this.sector.scale(1.1, 1.1, this.cx, this.cy);
if (this.label) {
this.label[0].stop();
this.label[0].attr({ r: 7.5 });
this.label[1].attr({ "font-weight": 800 });
}
}, function () {
this.sector.animate({ transform: 's1 1 ' + this.cx + ' ' + this.cy }, 500, "bounce");
if (this.label) {
this.label[0].animate({ r: 5 }, 500, "bounce");
this.label[1].attr({ "font-weight": 400 });
}
});
//on click of this img, convert canvas to .png and prompt download
$('.explosive_download').click(function()
{
// turn svg into PNG
SVGtoPNG(explosivePaper.toSVG(), "explosivePieGraph");
});
}
和 HTML:
<div id="hour_pie" class="pie_chart"></div><img class="download_image hour_download" title="Download this graph" src="/images/download_small.png"></img>
<div id="explosive_pie" class="pie_chart" ></div><img class="download_image explosive_download" title="Download this graph" src="/images/download_small.png"></img>
<style type="text/css">
.pie_chart
{
width:1000px;
height:450px;
}
.download_image
{
display: block;
margin-left: auto;
margin-right: auto;
}
</style>
最佳答案
我遇到的问题是我从 xml 中提取 Canvas 的方式造成的。正如我发现的那样,多个 Canvas 存储在一个数组中,它们不会单独从文档中返回(事后看来这是有道理的)。因此,根据我的实现,我需要知道要转换为 .png 的 Canvas 的索引。这是在 SVGtoPNG 函数中。更具体地说,关于行 var svgElement = document.body.getElementsByTagName("svg")[1]; 0 是我的第一个 Canvas ,1 是第二个 Canvas ,等等。
function SVGtoPNG(xml, name) {
try
{
//add canvas into body
var canvas = document.createElement('canvas');
canvas.id = "myCanvas";
document.body.appendChild(canvas);
//default is 'xml' (used for IE8)
var finalSvg=xml;
// IE8 is special and a pain in the ass
if(BrowserDetect.browser==="Explorer" && BrowserDetect.version===8)
{
FlashCanvas.initElement(canvas);
}
else
{
//serialize svg
var svgElement = document.body.getElementsByTagName("svg")[1];
var svgXml = (new XMLSerializer()).serializeToString(svgElement);
finalSvg = svgXml.FixForRaphael();
}
关于javascript - gRaphael:无法访问多篇论文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18154791/
我使用 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
我是一名优秀的程序员,十分优秀!