尝试添加options.scales.xAxes.ticks.maxTicksLimit
选项:
xAxes: [{
type: 'time',
ticks: {
autoSkip: true,
maxTicksLimit: 20
}
}]
maxRotation: 0
。 - Caio Cunha具体来说,假设你的原始标签列表如下:
["0", "1", "2", "3", "4", "5", "6", "7", "8"]
如果你只想显示每4个标签中的一个,那么过滤你的标签列表,使得每4个标签中有一个被填充,其他都是空字符串(例如 ["0","","","","4","","","","8"]
)。
""
还会删除图表上对应的工具提示! - Haywiremy_labels = [my_labels[i] if i % 10 == 0 else "" for i in range(len(my_list))]
。当然,数字10可以在文件开头声明为常量,以便更轻松地参数化该过程。 - pkaramol""
的情况下完成,就像在这个问题的回答中 使用chart.js出现垂直网格线问题 中一样,其中 OP 遇到了黑色线条出现在这个双引号的第一次出现时的问题,在这种情况下,它有帮助,正如 @haywire 所提到的,它会从工具提示中删除标签。 - Mi-Creativity对于任何想在Chart JS V2上实现此目标的人,请使用以下代码:
var options = {
scales: {
xAxes: [{
afterTickToLabelConversion: function(data){
var xLabels = data.ticks;
xLabels.forEach(function (labels, i) {
if (i % 2 == 1){
xLabels[i] = '';
}
});
}
}]
}
}
然后像往常一样将options变量传递给a:
myLineChart = new Chart(ctx, {
type: 'line',
data: data,
options: options
});`
更新:
我已经使用最新的代码从NNick的Chart.js主分支拉取(截至2014年1月27日),并更新了我的分支。 https://github.com/hay-wire/Chart.js/tree/showXLabels
原始回答:
对于仍然遇到这个问题的人,我在一段时间前叉出了Chart.js来解决同样的问题。您可以在此处查看: https://github.com/hay-wire/Chart.js/tree/skip-xlabels => 老版本!检查showXLabels分支获取最新代码。
如何使用:
适用于条形图和线形图。
用户现在可以传递 { showXLabels: 10 }
来仅显示10个标签(实际显示标签数量可能会略有不同,具体取决于x轴上存在的总标签数,但是它仍将保持接近10)
当数据量非常大时,这很有帮助。以前,由于x轴标签在狭小的空间中相互绘制,图表看起来非常混乱。使用 showXLabels
,用户现在可以控制将标签数量减少到适合其可用空间的任何数量。
请参见附加的图像进行比较。
没有 showXLabels
选项:
使用传递进选项的 { showXLabels: 10 }
:
这里有一些关于它的讨论:
这里是关于Chart.js的一个问题的解决方案,涉及到了IT技术。对于Chart.js 3.3.2版本,您可以使用@Nikita Ag的方法,稍作修改即可。您可以查看文档。将ticks
放置在scales
中的xAxis
中。例如:
...
options: {
scales: {
xAxis: {
ticks: {
maxTicksLimit: 10
}
}
}
}
...
options: {
scales: {
x: {
ticks: {
maxTicksLimit: 10
}
}
}
}
对于轴旋转,使用以下方法:
使用这个:
scales: {
xAxes: [
{
// aqui controlas la cantidad de elementos en el eje horizontal con autoSkip
ticks: {
autoSkip: true,
maxRotation: 0,
minRotation: 0
}
}
]
}
draw()
之前通过空字符串修改xLabels
,然后恢复它们。此外,在隐藏后可以应用重新旋转x标签,因为有更多的空间。var axisFixedDrawFn = function() {
var self = this
var widthPerXLabel = (self.width - self.xScalePaddingLeft - self.xScalePaddingRight) / self.xLabels.length
var xLabelPerFontSize = self.fontSize / widthPerXLabel
var xLabelStep = Math.ceil(xLabelPerFontSize)
var xLabelRotationOld = null
var xLabelsOld = null
if (xLabelStep > 1) {
var widthPerSkipedXLabel = (self.width - self.xScalePaddingLeft - self.xScalePaddingRight) / (self.xLabels.length / xLabelStep)
xLabelRotationOld = self.xLabelRotation
xLabelsOld = clone(self.xLabels)
self.xLabelRotation = Math.asin(self.fontSize / widthPerSkipedXLabel) / Math.PI * 180
for (var i = 0; i < self.xLabels.length; ++i) {
if (i % xLabelStep != 0) {
self.xLabels[i] = ''
}
}
}
Chart.Scale.prototype.draw.apply(self, arguments);
if (xLabelRotationOld != null) {
self.xLabelRotation = xLabelRotationOld
}
if (xLabelsOld != null) {
self.xLabels = xLabelsOld
}
};
Chart.types.Bar.extend({
name : "AxisFixedBar",
initialize : function(data) {
Chart.types.Bar.prototype.initialize.apply(this, arguments);
this.scale.draw = axisFixedDrawFn;
}
});
Chart.types.Line.extend({
name : "AxisFixedLine",
initialize : function(data) {
Chart.types.Line.prototype.initialize.apply(this, arguments);
this.scale.draw = axisFixedDrawFn;
}
});
clone
是一个外部依赖项。