AmCharts 设置显示月份
AmCharts set displayed Month
我正在使用 AmCharts/AmStockCharts 来显示横跨全年的数据折线图。它通常会放大以显示一个月,因为这是一个有用的缩放级别。
它默认显示它有数据的最后一个月,但是,我想将它设置为显示当前月份。
目前这是图表的配置:
AmCharts.makeChart("overview_chart", {
type: "stock",
"theme": "light",
"categoryAxesSettings": {
minPeriod: "1hh",
groupToPeriods: ["1hh"]
},
dataSets: [
{
fieldMappings: fieldMappings,
dataProvider: chartData,
title: "Overview",
categoryField: "date"
}
],
panels: [
{
title: "Results",
showCategoryAxis: true,
percentHeight: 70,
valueAxes: [
{
id: "v1",
stackType: "regular"
}
],
categoryAxis: {
dashLength: 5
},
stockGraphs: stockGraphs,
stockLegend: {
align: "left",
position: "absolute",
divId: "optimizationLegend"
}
}
],
chartScrollbarSettings: {
graph: "Total", // shows nice profile
graphType: "line",
usePeriod: "1hh"
},
chartCursorSettings: {
valueBalloonsEnabled: true,
valueLineBalloonEnabled: true,
valueLineEnabled: true,
categoryBalloonText: '[[category]]',
categoryBalloonDateFormats: [
{
period: "YYYY",
format: "DD.MM.YYYY HH:NN"
}, {
period: "MM",
format: "DD.MM.YYYY HH:NN"
}, {
period: "WW",
format: "DD.MM.YYYY HH:NN"
}, {
period: "DD",
format: "DD.MM.YYYY HH:NN"
}, {
period: "hh",
format: "DD.MM.YYYY HH:NN"
}, {
period: "mm",
format: "DD.MM.YYYY HH:NN"
}, {
period: "ss",
format: "DD.MM.YYYY HH:NN"
}, {
period: "fff",
format: "DD.MM.YYYY HH:NN"
}
]
},
periodSelector: {
position: "bottom",
periods: [
{
period: "MM",
selected: true,
count: 1,
label: "1 month"
}, {
period: "YYYY",
count: 1,
label: "1 year"
}, {
period: "YTD",
label: "YTD"
}, {
period: "MAX",
label: "MAX"
}
]
},
"export": {
"enabled": true
}
});
我该怎么做?
听起来您启用了 periodSelector
,其中一个按钮 selected
属性 设置为 true(很可能是 AmCharts 示例中的 1 month
按钮).默认情况下,这些按钮始终从数据的末尾开始,但如果您在 periodSelector
中创建自己的 changed
事件,则可以调整行为,但这有点偏离主题。
您可以通过创建自己的 rendered
event that zooms to your desired dates by calling the chart's zoom
方法来设置默认缩放。请注意,您需要从 periodSelector
中删除 selected
属性 才能正常工作:
var chart = AmCharts.makeChart("chartdiv", {
// ...
"listeners": [{
"event": "rendered",
"method": function(e) {
var startDate = new Date();
var endDate = new Date();
startDate.setDate(1);
endDate.setMonth(endDate.getMonth() + 1, 1);
e.chart.zoom(startDate, endDate);
}
}]
});
这是一个 demo。
编辑
init
event will also work as well and may be preferable depending on your scenario. validateData()
/validateNow()
调用会触发 rendered
事件,因此如果您在初始 makeChart 调用后向图表动态添加数据,那么默认缩放代码也会触发。如果您不希望发生这种情况,请改用 init
。
我正在使用 AmCharts/AmStockCharts 来显示横跨全年的数据折线图。它通常会放大以显示一个月,因为这是一个有用的缩放级别。
它默认显示它有数据的最后一个月,但是,我想将它设置为显示当前月份。
目前这是图表的配置:
AmCharts.makeChart("overview_chart", {
type: "stock",
"theme": "light",
"categoryAxesSettings": {
minPeriod: "1hh",
groupToPeriods: ["1hh"]
},
dataSets: [
{
fieldMappings: fieldMappings,
dataProvider: chartData,
title: "Overview",
categoryField: "date"
}
],
panels: [
{
title: "Results",
showCategoryAxis: true,
percentHeight: 70,
valueAxes: [
{
id: "v1",
stackType: "regular"
}
],
categoryAxis: {
dashLength: 5
},
stockGraphs: stockGraphs,
stockLegend: {
align: "left",
position: "absolute",
divId: "optimizationLegend"
}
}
],
chartScrollbarSettings: {
graph: "Total", // shows nice profile
graphType: "line",
usePeriod: "1hh"
},
chartCursorSettings: {
valueBalloonsEnabled: true,
valueLineBalloonEnabled: true,
valueLineEnabled: true,
categoryBalloonText: '[[category]]',
categoryBalloonDateFormats: [
{
period: "YYYY",
format: "DD.MM.YYYY HH:NN"
}, {
period: "MM",
format: "DD.MM.YYYY HH:NN"
}, {
period: "WW",
format: "DD.MM.YYYY HH:NN"
}, {
period: "DD",
format: "DD.MM.YYYY HH:NN"
}, {
period: "hh",
format: "DD.MM.YYYY HH:NN"
}, {
period: "mm",
format: "DD.MM.YYYY HH:NN"
}, {
period: "ss",
format: "DD.MM.YYYY HH:NN"
}, {
period: "fff",
format: "DD.MM.YYYY HH:NN"
}
]
},
periodSelector: {
position: "bottom",
periods: [
{
period: "MM",
selected: true,
count: 1,
label: "1 month"
}, {
period: "YYYY",
count: 1,
label: "1 year"
}, {
period: "YTD",
label: "YTD"
}, {
period: "MAX",
label: "MAX"
}
]
},
"export": {
"enabled": true
}
});
我该怎么做?
听起来您启用了 periodSelector
,其中一个按钮 selected
属性 设置为 true(很可能是 AmCharts 示例中的 1 month
按钮).默认情况下,这些按钮始终从数据的末尾开始,但如果您在 periodSelector
中创建自己的 changed
事件,则可以调整行为,但这有点偏离主题。
您可以通过创建自己的 rendered
event that zooms to your desired dates by calling the chart's zoom
方法来设置默认缩放。请注意,您需要从 periodSelector
中删除 selected
属性 才能正常工作:
var chart = AmCharts.makeChart("chartdiv", {
// ...
"listeners": [{
"event": "rendered",
"method": function(e) {
var startDate = new Date();
var endDate = new Date();
startDate.setDate(1);
endDate.setMonth(endDate.getMonth() + 1, 1);
e.chart.zoom(startDate, endDate);
}
}]
});
这是一个 demo。
编辑
init
event will also work as well and may be preferable depending on your scenario. validateData()
/validateNow()
调用会触发 rendered
事件,因此如果您在初始 makeChart 调用后向图表动态添加数据,那么默认缩放代码也会触发。如果您不希望发生这种情况,请改用 init
。