我有一个显示正常的Chart.js图表,直到我添加time scale为止。配置如下所示:
this.chart = new Chart(this.ctx, {
type: 'line',
data: data,
options: {
legend: {
display: false
},
scales: {
xAxes: [{
type: 'time',
time: {
unit: 'month',
format: 'timeFormat'
}
}]
}
}
});
data
对象如下所示:
let data = {
labels: ["1485903600", "1490738400"],
datasets: [{
label: '',
data: [120, 30],
lineTension: 0
}]
};
x轴正确显示两个日期,y轴受正确限制(即120和30)限制,但数据未显示在图表上。
答案 0 :(得分:8)
转换为时间刻度时图表未显示数据的原因是因为您传递了 string a = "aBcdef3213BBBBB0913456";
var charList = a.ToCharArray();
string newString = string.Empty;
foreach (var letter in charList.Reverse())
{
var number = 0;
if (Int32.TryParse(letter.ToString(), out number))
{
newString = string.Format("{0}{1}", letter, newString);
}
else
{
break;
}
}
构造函数无法解析的标签的字符串值。
时间刻度要求整数(自纪元以来的毫秒数),Date
对象,Date
对象或日期的字符串表示形式,其格式为{{1 }} 可以理解。
因此,在您的情况下,当渲染图表时,它无法为X轴创建moment.js
个对象(因为您的标签值),因此它使用{{1}创建了2个Date.parse()
个对象(这就是为什么X轴仍然会显示一些日期数据...请注意它是2017年的日期,因为Date
会返回一个date
,现在已初始化。
要更正此问题,只需将标签值转换为整数(例如删除引号),然后图表就会显示您的数据点。该图表看起来仍然很有趣,因为X比例是以new Date()
为单位配置的,但您的数据值仅相隔1天(1485903600 = 1970年1月17日10:45 PM和1490738400 = 1970年1月18日12:05 AM)。
这是https://software.sandia.gov/downloads/pub/pyomo/PyomoOnlineDocs.html#_a_simple_concrete_pyomo_model,它会显示原始图表和正确的图表,以便您了解其中的差异。