如何在y轴上设置自定义标签
How to set custom labels on y axis
我正在使用Google Chart API(而不是Google Image Chart)创建一个日期位于x轴(底部)、数字位于y轴(左侧)的折线图。我想添加一个带有字符串标签的r轴(右)。
如果我正确理解下一页,只有长轴上有字符串(折线图为x轴)。仅次轴(y和r轴)接受连续值(如数字)而不接受离散值(如字符串)。
自定义轴
在谷歌图像图表中,可以通过将字符串数据分配给一个值(比如从0到100)并使用chxl参数将自定义字符串标签分配给轴来解决这个问题。如果数据间隔均匀,这就特别容易。
我看过API参考资料,但在使用Google Chart API时找不到类似的内容。
有人知道这是否可能吗?
谨致问候,JP
最简单的方法是将以下内容添加到图形选项中:
vAxis: { ticks: [{ v: 0, f: 'Zero'}, {v: 1, f: 'One'}, {v: 2, f: 'Two'}]}
在这个例子中,我指出应该显示"零"而不是0,应该显示"一"而不是1,等等。
实现这一目标的一种HACK方法。
正如您所知,谷歌图表使用SVG绘制图表。因此,在绘制图表后,SVG元素会插入到HTMLDOM中。因此,通过使用jQuery,您可以找到vAxis标签元素并更改其文本。
例如,在我的例子中,我的vAxis具有类似[0,1,2,3,4]的值。我想把它改成["IDLE","PCH","FACH","DCH","]而不是数字。
我使用浏览器的web元素检查器工具为vAxis标签的DOM结构创建了SVG元素。
所以,我在绘制图表后添加了如下所示的代码。
$('#busy_rrclogs svg text[text-anchor="end"]:contains("0")').text("IDLE");
$('#busy_rrclogs svg text[text-anchor="end"]:contains("1")').text("PCH");
$('#busy_rrclogs svg text[text-anchor="end"]:contains("2")').text("FACH");
$('#busy_rrclogs svg text[text-anchor="end"]:contains("3")').text("DCH");
$('#busy_rrclogs svg text[text-anchor="end"]:contains("4")').text("");
我将图形添加到下面的HTMLdiv元素中,您可以从上面的jQuery选择器中看到。
<div id="busy_rrclogs">
</div>
它可以解决我的问题,即使它是一种黑客。
只要谷歌将来不会更改api,这个黑客就可以工作。此外,它还可以工作,直到你不使用实验选项"资源管理器"。如果您使用缩放,则图表将在每个鼠标滚轮事件上重新呈现,并且您的值将消失。非常可悲的是,图表api没有公开任何缩放或重新渲染事件。只有"就绪"事件在绘制图表后才触发一次。此外,我注意到,当我将yAxis值提供给api时,我无法对其进行计数。如果api决定这些字符串太长,它将使用工具提示只呈现其中的子字符串。
所以,我只能想出一个笨拙而真实的解决办法。我留下了笨拙的一个,因为它与以前的帖子一致
var chartDiv = document.getElementById ("chart");
chartDiv .addEventListener ("mousewheel", ProcessChart, false);
//take care of "mousewheel" event browser compatibility!!!
function ProcessChart() {
setTimeout(function() {
$("#chart svg text[text-anchor='end']:contains('$C$')").each(function() {
var $this = $(this);
var val = parseInt($this.text());
var label = GetCommunicationLabel(val);
$this.text(label);
});
}, 20);
}
请注意,我使用了setTimeout函数来处理标签。图表也在鼠标滚轮事件上呈现,如果不延迟,您将尝试处理尚不存在的标签。20毫秒只是一个实验值,它取决于在鼠标滚轮事件上重新渲染图表的时间。不幸的是,当旧值被替换为时,用户能够检测到闪烁。
我终于找到了真正的解决方案。
vAxes: {
0: {
format: '#%',
ticks: [0, 0.25, 0.5, 0.75, 1]
//minValue: 0,
//maxValue: 1,
//title: batteryText,
},
1: {
ticks: [ { v: 0, f: GetCommunicationLabel(0) },
{ v: 1, f: GetCommunicationLabel(1) },
{ v: 2, f: GetCommunicationLabel(2) },
{ v: 3, f: GetCommunicationLabel(3) },
{ v: 4, f: GetCommunicationLabel(4) }],
// format: "#",
textPosition: 'out'
//minValue: 0,
//maxValue: 3,
//title: communicationText,
}
},
- 如何设置自定义垂直滑块Jquery的动画
- 如何在ExtJs4应用程序上为视图、存储和模型设置自定义文件夹名称
- Alfresco JavaScript,当文件上传到网站时,设置自定义类型属性
- 如何使用传单为传单实时插件设置自定义图标
- 正在设置自定义属性名称
- 设置自定义覆盖和多边形的任意z索引顺序
- 在条件中的几个时间行中设置自定义css效果后,从Jquery时间选择器显示时间
- 从ngInit在AngularJS中全局设置自定义HTTP头
- 使用 jQuery 设置自定义属性和值
- 谷歌分析设置自定义维度值
- 如果未选中,则 js 复选框不设置自定义值
- 使用 JavaScript 设置自定义属性
- node_module 设置自定义版本
- 如何在只读输入字段上设置自定义有效性
- JQPLOT 根据标签名称为饼图设置自定义颜色
- 角度设置自定义标头始终包装在访问控制请求标头中
- 在 Ajax 调用中设置自定义内容类型响应标头
- 通用分析中用于设置自定义维度的操作顺序
- 如何设置自定义对象属性以在 Angular 类型提前中进行筛选
- 如何在 php 中设置自定义月份开始日期和结束日期