javascript - ChartJS 如何设置 X 轴的最大标签?
问题描述
我从一个数组接收图表数据,其中存储了从 2016, 1 到 2018, 12 的日期。在图表中,它显示了 3 年的所有月份。但我只需要展示 1 年。有任何想法吗?
在这里,我传递了一个数组并更改月份的单位,还有 displayFormats
chartHour.config.data.datasets[0].data = array
chartHour.config.options.scales.xAxes[0].time = {
unit: "month",
stepSize: 1,
displayFormats: {
month: "MMM",
},
}
解决方案
您可以通过在键下定义min
和max
值来实现。time
如果
min
或max
被定义,这将分别覆盖数据最小值或最大值。有关更多信息,请参阅文档。
chartHour.config.options.scales.xAxes[0] = {
type: "time",
time: {
min: "2017-01-01",
max: "2017-12-01",
displayFormats: {
day: "MMM YY"
}
}
};
请参阅下面的工作示例。
const months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
const years = [2016, 2017, 2018];
const labels = [];
const dataSet = [];
years.forEach((year, index) => {
months.forEach((month, monthIndex) => {
const date = moment(`${month} ${year}`, "MMM YYYY").format('YYYY-MM-DD');
labels.push(date);
dataSet.push({
x: date,
y: (monthIndex + 12) * (index + 1)
});
});
});
var data = {
labels: labels,
datasets: [{
pointRadius: 0,
label: "Positive",
lineTension: 0,
data: dataSet,
borderWidth: 1,
backgroundColor: "rgba(0, 255, 0, 0.5)"
}]
};
var options = {
scales: {
xAxes: [{
type: "time",
distribution: 'series',
time: {
min: "2017-01-01",
max: "2017-12-01",
displayFormats: {
day: 'MMM YY'
}
},
ticks: {
source: "labels"
},
gridLines: {
display: false
}
}]
}
};
var ctx = document.getElementById("myChart").getContext("2d");
var myBarChart = new Chart(ctx, {
type: "bar",
data: data,
options: options
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.23.0/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.3/Chart.min.js"></script>
<canvas id="myChart" width="300" height="100"></canvas>
推荐阅读
- json - 如何使用 jq 将 JSON 字符串格式化为“key=value”格式?
- java - 在 Spring MVC 中将 JSON 数据传递给 POST
- python - 使用 ProcessPoolExcecutor 进行多处理会产生意想不到的结果
- crash - 在 Windows 10 上运行“新查询”会导致 SQL Server Management Studio 2019 崩溃
- c# - 在链表中如果我传递对象数据然后搜索代码不起作用
- django - 从 django settings.py 访问 javascript 中的 API 密钥
- javascript - Sequelize - bulkInsert 排除任何已经存在的条目
- html - Flex 显示为按钮提供自动高度
- javascript - 在 REACT 中更改动态生成的组件的类别而不为每个组件手动创建单独的状态?
- android - 如何在 Flutter 中用 CircleAvatar 替换抽屉的汉堡包图标?