ZingChart - 形状作为标签
ZingChart - Shapes as Labels
我需要在我的图表上添加一些额外的标签,所以我使用了形状。这是结果:
http://jsfiddle.net/z3n3qobm/91/
但我需要将示例中的圆与 X 轴的标签对齐。图表必须是响应式的,标签总数取决于数据库。
我有一个函数可以生成“%”中形状的初始位置,但是当我更改 window 的大小时它会错位。
我做了一些计算,但是当图表调整大小时它并没有保持固定的比例。
有人知道如何在 X 轴标签的相同位置使用形状吗?
遗憾的是,ZingChart 不提供根据大小调整形状和标签的方法。挂钩可用于在节点上放置标签,但不能用于缩放项目本身。
现在我确实有解决您的问题的方法,但需要明确的是,这更多是利用 ZingChart 和多个图表的技巧进行黑客攻击。我删除了您图表中的形状,并决定使用第二张图表复制这些圆圈。
这样做的主要目标是利用散点图,修改每个散点节点的外观以复制您想要实现的目标,并隐藏所有不必要的表面项目(比例、删除的 plotarea 边距)。请注意,我使用的是混合图表,一个系列用于散点图,另一个系列用于虚拟条形图,以强制比例与上面图表的显示方式相匹配。
http://jsfiddle.net/mikeschultz/q6arebsu/1/
(下面的片段以防将来删除 jsfiddle)。
这也可以通过将两个图表组合成一个图形集来实现,但我发现使用单独的图表更灵活。
var myData = {
"graphset":[
{
"globals":{
"overflow":"visible"
},
"plot":{
"animation":{
"effect":"ANIMATION_EXPAND_BOTTOM",
"sequence":null,
"speed":10
},
"aspect":"jumped"
},
"plotarea": {
"margin-bottom": 30
},
"type":"mixed",
"series":[
{
"type":"bar",
"values":[46,46,53,50],
"background-color":"#5e36e6",
"value-box":{
"placement":"bottom-in",
"rules":[
{
"rule":"%v==0",
"visible":false
}
],
"thousands-separator":".",
"font-color":"#fff"
},
"palette":0
},
{
"type":"bar",
"values":[52,53,61,58],
"background-color":"#0099cd",
"value-box":{
"placement":"top",
"rules":[
{
"rule":"%v==0",
"visible":false
}
],
"thousands-separator":".",
"font-color":"#fff"
},
"palette":1
},
{
"type":"line",
"values":[150,105,399,159],
"marker":{
"size":0,
"border-width":0,
"background-color":"transparent"
},
"line-color":"#99cc33",
"line-width":3,
"value-box":{
"placement":"top",
"rules":[
{
"rule":"%v==0",
"visible":false
}
],
"thousands-separator":"."
},
"palette":2
}
],
"background-color":"#3F0767",
"scale-x":{
"tick":{
"alpha":0
},
"zooming":false,
"labels":["AB","CDE","FG","HI JKL"],
"line-width":0,
"zoom-to":null
},
"scale-y":{
"guide":{
"alpha":0.25,
"line-style":"solid",
"line-color":"#5a3b77"
},
"short":true,
"tick":{
"alpha":0
},
"line-width":0
},
"scroll-x":false
},
]
};
zingchart.render({
id : 'myChart',
data : myData,
height: 400
});
var bubbleConfig = {
type: 'mixed',
backgroundColor:"#3F0767",
scaleX: {
visible: false
},
scaleY: {
visible: false
},
plotarea: {
marginTop : 0,
marginBottom: 0,
maskTolerance: [0,0]
},
plot: {
marker: {
size: 30,
borderColor: '#371876',
borderWidth: 3,
backgroundColor: 'transparent'
},
tooltip: {
visible: false
}
},
scaleY: {
values: "0:2:1",
visible: false
},
series: [
{
type:'scatter',
values: [
[0,1],
[1,1],
[2,1],
[3,1]
],
valueBox: {
visible: true,
text: 'foobar',
fontColor: '#fff',
fontSize: '15px',
fontWeight: 'normal',
placement: 'over',
rules: [
{
rule: '%i == 0',
text: '35%'
},
{
rule: '%i == 1',
text: '51%'
},
{
rule: '%i == 2',
text: '15%'
},
{
rule: '%i == 3',
text: '36%'
}
]
}
},
{
type:'bar',
values: []
}
]
}
zingchart.render({
id : 'myBubbles',
data : bubbleConfig,
height: 80
});
<html>
<head>
<script src="http://cdn.zingchart.com/zingchart.min.js"></script>
</head>
<body>
<div id="myChart"></div>
<div id='myBubbles'></div>
</body>
</html>
我需要在我的图表上添加一些额外的标签,所以我使用了形状。这是结果: http://jsfiddle.net/z3n3qobm/91/
但我需要将示例中的圆与 X 轴的标签对齐。图表必须是响应式的,标签总数取决于数据库。
我有一个函数可以生成“%”中形状的初始位置,但是当我更改 window 的大小时它会错位。
我做了一些计算,但是当图表调整大小时它并没有保持固定的比例。
有人知道如何在 X 轴标签的相同位置使用形状吗?
遗憾的是,ZingChart 不提供根据大小调整形状和标签的方法。挂钩可用于在节点上放置标签,但不能用于缩放项目本身。
现在我确实有解决您的问题的方法,但需要明确的是,这更多是利用 ZingChart 和多个图表的技巧进行黑客攻击。我删除了您图表中的形状,并决定使用第二张图表复制这些圆圈。 这样做的主要目标是利用散点图,修改每个散点节点的外观以复制您想要实现的目标,并隐藏所有不必要的表面项目(比例、删除的 plotarea 边距)。请注意,我使用的是混合图表,一个系列用于散点图,另一个系列用于虚拟条形图,以强制比例与上面图表的显示方式相匹配。
http://jsfiddle.net/mikeschultz/q6arebsu/1/
(下面的片段以防将来删除 jsfiddle)。
这也可以通过将两个图表组合成一个图形集来实现,但我发现使用单独的图表更灵活。
var myData = {
"graphset":[
{
"globals":{
"overflow":"visible"
},
"plot":{
"animation":{
"effect":"ANIMATION_EXPAND_BOTTOM",
"sequence":null,
"speed":10
},
"aspect":"jumped"
},
"plotarea": {
"margin-bottom": 30
},
"type":"mixed",
"series":[
{
"type":"bar",
"values":[46,46,53,50],
"background-color":"#5e36e6",
"value-box":{
"placement":"bottom-in",
"rules":[
{
"rule":"%v==0",
"visible":false
}
],
"thousands-separator":".",
"font-color":"#fff"
},
"palette":0
},
{
"type":"bar",
"values":[52,53,61,58],
"background-color":"#0099cd",
"value-box":{
"placement":"top",
"rules":[
{
"rule":"%v==0",
"visible":false
}
],
"thousands-separator":".",
"font-color":"#fff"
},
"palette":1
},
{
"type":"line",
"values":[150,105,399,159],
"marker":{
"size":0,
"border-width":0,
"background-color":"transparent"
},
"line-color":"#99cc33",
"line-width":3,
"value-box":{
"placement":"top",
"rules":[
{
"rule":"%v==0",
"visible":false
}
],
"thousands-separator":"."
},
"palette":2
}
],
"background-color":"#3F0767",
"scale-x":{
"tick":{
"alpha":0
},
"zooming":false,
"labels":["AB","CDE","FG","HI JKL"],
"line-width":0,
"zoom-to":null
},
"scale-y":{
"guide":{
"alpha":0.25,
"line-style":"solid",
"line-color":"#5a3b77"
},
"short":true,
"tick":{
"alpha":0
},
"line-width":0
},
"scroll-x":false
},
]
};
zingchart.render({
id : 'myChart',
data : myData,
height: 400
});
var bubbleConfig = {
type: 'mixed',
backgroundColor:"#3F0767",
scaleX: {
visible: false
},
scaleY: {
visible: false
},
plotarea: {
marginTop : 0,
marginBottom: 0,
maskTolerance: [0,0]
},
plot: {
marker: {
size: 30,
borderColor: '#371876',
borderWidth: 3,
backgroundColor: 'transparent'
},
tooltip: {
visible: false
}
},
scaleY: {
values: "0:2:1",
visible: false
},
series: [
{
type:'scatter',
values: [
[0,1],
[1,1],
[2,1],
[3,1]
],
valueBox: {
visible: true,
text: 'foobar',
fontColor: '#fff',
fontSize: '15px',
fontWeight: 'normal',
placement: 'over',
rules: [
{
rule: '%i == 0',
text: '35%'
},
{
rule: '%i == 1',
text: '51%'
},
{
rule: '%i == 2',
text: '15%'
},
{
rule: '%i == 3',
text: '36%'
}
]
}
},
{
type:'bar',
values: []
}
]
}
zingchart.render({
id : 'myBubbles',
data : bubbleConfig,
height: 80
});
<html>
<head>
<script src="http://cdn.zingchart.com/zingchart.min.js"></script>
</head>
<body>
<div id="myChart"></div>
<div id='myBubbles'></div>
</body>
</html>