我想知道如何才能制作一个简单的条形图,可能有一天为X轴,值为'今天'和'昨天',Y轴也许是'时间'与相应的值'1'和'2'。我想我很困惑如何将文本设置为x轴的值,如何显示y轴,以及rgaxis究竟做了什么...... (我找到一个使用axis = r.g.axis(0,300,400,0,500,8,2)
的例子,我只知道它是xpos
,ypos
,width
,??
,?? num ticks
,??
)。任何见解都会很棒!或者具有更全面的条形图示例(标签等)的页面。谢谢。带文本x轴的graphael条形图
回答
出于所有这些的缘故使用Google这样的:
r.g.axis(x_start, y_start, x_width, from, to, steps, orientation, labels, type, dashsize)
x_start和y_start:从左下角坐标轴文本的距离
x_width:端部的位置的文字沿着x轴
从和到:用于指定和范围使用,而不是使用标签参数
步骤:是滴答数 - 1个
取向:好像以指定的x轴与y轴轴
类型:是使用的刻度标记的类型。
这全部从source code推导出来。我想我会切换到一个现在有文档的图表库...
你在正确的轨道上。您使用g.axis,设置文本的位置参数可以在'text'arg(位置)中找到,并使用'orientation'参数来切换y。我在这里补充一个例子,
希望它帮助。
不再使用graphael但感谢帮助:) – butterywombat 2011-03-03 02:32:44
链接是死 – 2013-01-27 10:49:46
更新的链接 – 2013-01-30 17:56:14
当前代码(Raphaeljs 2.0)已经改变,并且必须稍微改编以使用Raphael.g.axis代替rgaxis:
Raphael.g.axis(85230310,NULL,NULL,4,2,[ “今天”, “昨天”, “明天”, “未来”], “|”,0,R)
读这个Q & A和一打喜欢它,我仍然无法让gRaphaël显示适当的条形图标签。这些食谱似乎都是指图书馆的旧版本,或者不再存在的github页面。 gRaphaël产生了一些非常好看的输出结果 - 但它的文档有很多不足之处。
但是,我可以使用Firebug和Inspect This Element的组合来查看代码并查看它生成的内容。潜入条形图对象中,所需的几何图形就在那里。为了拯救他人的挫折,这里就是我解决了这个问题:
<script>
function labelBarChart(r, bc, labels, attrs) {
// Label a bar chart bc that is part of a Raphael object r
// Labels is an array of strings. Attrs is a dictionary
// that provides attributes such as fill (text color)
// and font (text font, font-size, font-weight, etc) for the
// label text.
for (var i = 0; i<bc.bars.length; i++) {
var bar = bc.bars[i];
var gutter_y = bar.w * 0.4;
var label_x = bar.x
var label_y = bar.y + bar.h + gutter_y;
var label_text = labels[i];
var label_attr = { fill: "#2f69bf", font: "16px sans-serif" };
r.text(label_x, label_y, label_text).attr(label_attr);
}
}
// what follows is just setting up a bar chart and calling for labels
// to be applied
window.onload = function() {
var r = Raphael("holder"),
data3 = [25, 20, 13, 32, 15, 5, 6, 10],
txtattr = { font: "24px 'Allerta Stencil', sans-serif", fill: "rgb(105, 136, 39)"};
r.text(250, 10, "A Gratuitous Chart").attr(txtattr);
var bc = r.barchart(10, 10, 500, 400, data3, {
stacked: false,
type: "soft"});
bc.attr({fill: "#2f69bf"});
var x = 1;
labelBarChart(r, bc,
['abc','b','card','d','elph','fun','gurr','ha'],
{ fill: "#2f69bf", font: "16px sans-serif" }
);
};
</script>
<div id="holder"></div>
还有一堆小的清理,你可以做labelBarChart()
,但这种基本能够完成任务。
下面是我写的添加标签的函数。这不是特别优雅,但它会增加标签:
Raphael.fn.labelBarChart = function(x_start, y_start, width, labels, textAttr) {
var paper = this;
// offset width and x_start for bar chart gutters
x_start += 10;
width -= 20;
var labelWidth = width/labels.length;
// offset x_start to center under each column
x_start += labelWidth/2;
for (var i = 0, len = labels.length; i < len; i++) {
paper.text(x_start + (i * labelWidth), y_start, labels[i]).attr(textAttr);
}
};
用法如下:
var paper = Raphael(0, 0, 600, 400);
var chart = paper.barchart(0, 0, 600, 380, [[63, 86, 26, 15, 36, 62, 18, 78]]);
var labels = ['Col 1', 'Col 2', 'Col 3', 'Col 4', 'Col 5', 'Col 6', 'Col 7', 'Col 8'];
paper.labelBarChart(0, 390, 600, labels, {'font-size': 14});
由于我想了解拉斐尔的工作方式,我想提出的一个解决方案Jonathan Eunice提出的labelBarChart函数问题。 考虑堆叠的杆graphes(或其他条形graphes与值的多于一个阵列),我添加上的情况下,bc.bars [0]测试的bc.bars.length装置堆叠值的阵列的数目。
这导致代码:
<script>
function labelBarChart(r, bc, labels, attrs) {
// Label a bar chart bc that is part of a Raphael object r
// Labels is an array of strings. Attrs is a dictionary
// that provides attributes such as fill (text color)
// and font (text font, font-size, font-weight, etc) for the
// label text.
//Added test : replace bc.bars by generic variable barsRef
var barsRef = (typeof bc.bars[0].length === 'undefined') ? bc.bars : bc.bars[0];
var bar, gutter_y, label_x, label_y, label_text;
//Added consideration of set attrs (if set)
var label_attr = (typeof attrs === 'undefined') ? {} : attrs;
label_attr['fill'] = (typeof label_attr['fill'] === 'undefined') ? "#2f69bf" : label_attr['fill'];
label_attr['font'] = (typeof label_attr['font'] === 'undefined') ? "16px sans-serif" : label_attr['font'];
for (var i = 0; i<barsRef.length; i++) {
bar = barsRef[i];
gutter_y = bar.w * 0.4;
label_x = bar.x
label_y = bar.y + bar.h + gutter_y;
label_text = labels[i];
r.text(label_x, label_y, label_text).attr(label_attr);
}
}
// what follows is just setting up a bar chart and calling for labels
// to be applied
// I added an array of data to illustrate : data4
window.onload = function() {
var r = Raphael("holder"),
data3 = [25, 20, 13, 32, 15, 5, 6, 10],
data4 = [0, 2, 1, 40, 1, 65, 46, 11],
txtattr = { font: "24px 'Allerta Stencil', sans-serif", fill: "rgb(105, 136, 39)"};
r.text(250, 10, "A Gratuitous Chart").attr(txtattr);
var bc = r.barchart(10, 10, 500, 400, [data3, data4] {
stacked: true,
type: "soft"});
bc.attr({fill: "#2f69bf"});
labelBarChart(r, bc,
['abc','b','card','d','elph','fun','gurr','ha'],
{ fill: "#2f69bf", font: "16px sans-serif" }
);
};
</script>
<div id="holder"></div>
我只是2个阵列堆叠值的测试,所以我不知道是否能正常工作与更多的(堆叠或不)。请告诉我 !
- 1. 带文本x轴的条形图 - achartengine
- 2. 在gRaphael中将x轴和y轴添加到条形图?
- 3. 带有格子条形图的x轴标签
- 4. 带有可数据列的Asp.net条形图作为X轴
- 5. 删除条形图上的X轴
- 6. 如何在条形图列中添加x轴文本
- 7. dc.js带顺序轴的条形图
- 8. D3 v4条形图X轴负值
- 9. 如何ggplot条形图沿x轴组
- 10. D3条形图左对齐x轴
- 11. Matlab:条形图x轴标签丢失
- 12. 如何使用gRaphael线图设置x轴的日期值
- 13. 在弹性条形图轴中显示带有图像的文本
- 14. 条形图x轴,y轴的值不与RTL方向渲染
- 15. Flex:堆叠条形图,日期为x轴,名称为y轴
- 16. Matplotlib条形图与两个Y轴和公共X轴
- 17. 带有Y轴断点和错误条的条形图
- 18. ZedGraph x轴图形上的矩形顶
- 19. 带双x轴(十进制)的谷歌条形图格式号码
- 20. dc.js带有序号x轴刻度的条形图无法正确呈现
- 21. x/y轴图形工具[文本文件输入]
- 22. 在R条形图中反转跨X轴的子图
- 23. D3Js条形图条开始方式X轴开始后
- 24. 带有使用Matplotlib的多个x和y轴的图形
- 25. iOS Core图+ X轴文本+图标
- 26. 如何删除条形图中条形之间的x轴间距?
- 27. gRaphael:如何增加条形图间的间距
- 28. 在R的两侧绘制X轴上的一个条形图
- 29. NVD3中分组/堆积条形图的文本轴标签
- 30. 向graphael图表添加任意文本
对此有何更新?马库斯你有答案吗? – jjnevis 2011-02-16 11:13:36
也不马库斯:P – butterywombat 2011-03-03 02:33:12