簡體   English   中英

固定X軸刻度,從不更改彈幕

[英]Fixed scale of X axis and never change amcharts

在此處輸入圖片說明

如果您可以在X軸上看到時間增量為6小時現在,我想將其刻度更改為2小時

我昨天才剛學到這枚安樂果,真的對如何使用它了解不多。

這是代碼

<script type="text/javascript">
//am4core.useTheme(am4themes_kelly);

am4core.useTheme(am4themes_animated);
// Themes end


// Create chart
var chart = am4core.create("chartdiv", am4charts.XYChart);
chart.paddingRight = 20;

chart.data = generateChartData();

var dateAxis = chart.xAxes.push(new am4charts.DateAxis());
dateAxis.baseInterval = {
  "timeUnit": "minute",
  "count": 1
};
dateAxis.tooltipDateFormat = "HH:mm, d MMMM";

var valueAxis = chart.yAxes.push(new am4charts.ValueAxis());
valueAxis.tooltip.disabled = true;
valueAxis.title.text = "Fin 1";

var series = chart.series.push(new am4charts.LineSeries());
series.dataFields.dateX = "date";
series.dataFields.valueY = "visits";
series.tooltipText = "Stacker: [bold]{valueY}[/]";
series.fillOpacity = 0.3;

chart.cursor = new am4charts.XYCursor();
chart.cursor.lineY.opacity = 0;
chart.scrollbarX = new am4charts.XYChartScrollbar();
chart.scrollbarX.series.push(series);


chart.events.on("datavalidated", function () {
    dateAxis.zoom({start:0, end:1});
});


function generateChartData() {
    var chartData = [];
    // current date
    var firstDate = new Date();
    // now set 12:00 am
    firstDate.setHours(0,0,0,0);

    // and generate 500 data items
    var visits = 0;
    for (var i = 0; i < 1442; i++) {
        var newDate = new Date(firstDate);
        // each time we add one minute
        newDate.setMinutes(newDate.getMinutes() + i);

        chartData.push({
        date: newDate,
        visits: visits
        });

    }
    return chartData;
}
</script>

我已經編輯了代碼,可以在這里編輯: https : //codepen.io/muhammad-syazani/pen/wLrbQE

是的,使用日期軸可能會很棘手。 即使您使用amCharts v4已有一段時間,也可能不清楚如何以所需方式馴服該軸。 我強烈建議您完整閱讀有關日期軸的指南 ,這確實有幫助。 圖表基本上會嘗試找出如何將頻率很好地適合圖表。

您要調整的第一件事是dateAxis.renderer.minGridDistance 默認情況下,其為120像素。 示例圖表有24小時,每2小時的最小像素間隔為120px, chart.plotContainer區域必須為120 * (24/2)或至少1440px,您的瀏覽器窗口必須更寬比起那個來說。 因此,如果我們將其削減,我們更有可能能夠適應2小時間隔的網格。

接下來的東西(這是主要成分)是dateAxis.gridIntervals 如果您查看生成的文檔,則會看到圖表將選擇的間隔列表。 每小時一次,或者每3個小時一次,但不是每2個小時一次。 如果我們將列表替換為間隔2小時的列表(如果可以的話),則圖表將使用該間隔。

您還需要在scrollBarX的日期軸上執行相同的操作。

相關代碼:

dateAxis.renderer.minGridDistance = 75; // 75 * 24/2 == 900 minimum plotContainer width requisite

var gridIntervals = [
 { timeUnit: "millisecond", count: 1 },
 { timeUnit: "millisecond", count: 5 },
 { timeUnit: "millisecond", count: 10 },
 { timeUnit: "millisecond", count: 50 },
 { timeUnit: "millisecond", count: 100 },
 { timeUnit: "millisecond", count: 500 },
 { timeUnit: "second", count: 1 },
 { timeUnit: "second", count: 5 },
 { timeUnit: "second", count: 10 },
 { timeUnit: "second", count: 30 },
 { timeUnit: "minute", count: 1 },
 { timeUnit: "minute", count: 5 },
 { timeUnit: "minute", count: 10 },
 { timeUnit: "minute", count: 30 },
 { timeUnit: "hour", count: 1 },
 { timeUnit: "hour", count: 2 }, // This is the 2-hour interval
 { timeUnit: "hour", count: 3 },
 { timeUnit: "hour", count: 6 },
 { timeUnit: "hour", count: 12 },
 { timeUnit: "day", count: 1 },
 { timeUnit: "day", count: 2 },
 { timeUnit: "day", count: 3 },
 { timeUnit: "day", count: 4 },
 { timeUnit: "day", count: 5 },
 { timeUnit: "week", count: 1 },
 { timeUnit: "month", count: 1 },
 { timeUnit: "month", count: 2 },
 { timeUnit: "month", count: 3 },
 { timeUnit: "month", count: 6 },
 { timeUnit: "year", count: 1 },
 { timeUnit: "year", count: 2 },
 { timeUnit: "year", count: 5 },
 { timeUnit: "year", count: 10 },
 { timeUnit: "year", count: 50 },
 { timeUnit: "year", count: 100 }
];
dateAxis.gridIntervals.setAll(gridIntervals);

chart.scrollbarX.events.on("validated", function() {
  chart.scrollbarX.scrollbarChart.xAxes.getIndex(0).gridIntervals.setAll(gridIntervals);
});

叉子:

https://codepen.io/team/amcharts/pen/9ba62a5bb5239fee149c2d46bf1e4b81

希望這可以幫助!

(順便說一句-薩拉姆斯!我喜歡用戶名,那是童話尾巴的引用嗎?)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM