莫里斯面积图显示不正确且缺少 x 轴数据
Incorrect display of Morris Area chart and missing x-axis data
我想知道是否有人可以指出正确的方向。我有一个名为 'VwDashBoard_Areachart' 的视图查询,其中包含以下五个字段以及来自 MSSQL 服务器的一些信息:
+-----+------+-----+-----+-----+
| ID | Year | OC | SS | ST |
+-----+------+-----+-----+-----+
| 1 | 2017 | 1 | 1 | 3 |
| 2 | 2018 | 1 | 1 | 2 |
| 3 | 2019 | 1 | 1 | 2 |
+-----+------+-----+-----+-----+
我想在 莫里斯面积图 中展示数据。我在下面的 controller 中有以下代码:
public ActionResult AreaChart()
{
var mc = from mon in db.VwDashBoard_Areachart
select new
{
year = mon.Year,
value = mon.SS,
value1 = mon.OC,
value2 = mon.ST,
};
return Json(mc, JsonRequestBehavior.AllowGet);
}
这是我的脚本:
$(document).ready(function () {
$.get('@Url.Action("AreaChart")', function (result) {
new Morris.Area({
// ID of the element in which to draw the chart.
element: 'morris-area-charts',//'myfirstchart',
data: result,
xkey: 'year',
ykeys: ['value', 'value1', 'value2'],
labels: ['OC', 'SS', 'ST'],
pointFillColors: ['#ffffff'],
lineColors: ['#ccc', '#7a6fbe', '#28bbe3'],
redraw: true,
lineWidth: [1, 1, 1],
pointSize: 1,
});
});
});
这是剃须刀的代码:
<div class="panel-body">
<div id="morris-area-charts"></div>
</div>
现在,当我 运行 脚本时,它显示面积图,但图表显示看起来不正确,并且不在 x 轴上显示年份。但是,如果我将图表显示为条形图,同样的结果看起来不错。
我想知道我是否忘记在脚本或控制器中包含某些内容,或者是否需要修改视图查询中数据布局的表示才能正确显示面积图。
我试过输入一些静态数据,面积图显示正确。问题是当我试图从数据库中获取数据时。任何帮助将不胜感激。
你的代码看起来不错。将 parseTime
参数设置为 false
以避免 Morris 解释日期:
parseTime: false
请根据您的数据尝试以下代码段:
var result = [
{ "year": "2017", "value": 1, "value1": 1, "value2": 3 },
{ "year": "2018", "value": 1, "value1": 1, "value2": 2 },
{ "year": "2019", "value": 1, "value1": 1, "value2": 2 }
];
new Morris.Area({
element: 'morris-area-charts',
data: result,
xkey: 'year',
ykeys: ['value', 'value1', 'value2'],
labels: ['OC', 'SS', 'ST'],
pointFillColors: ['#ffffff'],
lineColors: ['#ccc', '#7a6fbe', '#28bbe3'],
redraw: true,
lineWidth: [1, 1, 1],
pointSize: 1,
parseTime: false
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/raphael/2.1.0/raphael-min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/morris.js/0.5.1/morris.min.js"></script>
<link href="//cdnjs.cloudflare.com/ajax/libs/morris.js/0.5.1/morris.css" rel="stylesheet" />
<div class="panel-body">
<div id="morris-area-charts"></div>
</div>
我想知道是否有人可以指出正确的方向。我有一个名为 'VwDashBoard_Areachart' 的视图查询,其中包含以下五个字段以及来自 MSSQL 服务器的一些信息:
+-----+------+-----+-----+-----+
| ID | Year | OC | SS | ST |
+-----+------+-----+-----+-----+
| 1 | 2017 | 1 | 1 | 3 |
| 2 | 2018 | 1 | 1 | 2 |
| 3 | 2019 | 1 | 1 | 2 |
+-----+------+-----+-----+-----+
我想在 莫里斯面积图 中展示数据。我在下面的 controller 中有以下代码:
public ActionResult AreaChart()
{
var mc = from mon in db.VwDashBoard_Areachart
select new
{
year = mon.Year,
value = mon.SS,
value1 = mon.OC,
value2 = mon.ST,
};
return Json(mc, JsonRequestBehavior.AllowGet);
}
这是我的脚本:
$(document).ready(function () {
$.get('@Url.Action("AreaChart")', function (result) {
new Morris.Area({
// ID of the element in which to draw the chart.
element: 'morris-area-charts',//'myfirstchart',
data: result,
xkey: 'year',
ykeys: ['value', 'value1', 'value2'],
labels: ['OC', 'SS', 'ST'],
pointFillColors: ['#ffffff'],
lineColors: ['#ccc', '#7a6fbe', '#28bbe3'],
redraw: true,
lineWidth: [1, 1, 1],
pointSize: 1,
});
});
});
这是剃须刀的代码:
<div class="panel-body">
<div id="morris-area-charts"></div>
</div>
现在,当我 运行 脚本时,它显示面积图,但图表显示看起来不正确,并且不在 x 轴上显示年份。但是,如果我将图表显示为条形图,同样的结果看起来不错。
我想知道我是否忘记在脚本或控制器中包含某些内容,或者是否需要修改视图查询中数据布局的表示才能正确显示面积图。
我试过输入一些静态数据,面积图显示正确。问题是当我试图从数据库中获取数据时。任何帮助将不胜感激。
你的代码看起来不错。将 parseTime
参数设置为 false
以避免 Morris 解释日期:
parseTime: false
请根据您的数据尝试以下代码段:
var result = [
{ "year": "2017", "value": 1, "value1": 1, "value2": 3 },
{ "year": "2018", "value": 1, "value1": 1, "value2": 2 },
{ "year": "2019", "value": 1, "value1": 1, "value2": 2 }
];
new Morris.Area({
element: 'morris-area-charts',
data: result,
xkey: 'year',
ykeys: ['value', 'value1', 'value2'],
labels: ['OC', 'SS', 'ST'],
pointFillColors: ['#ffffff'],
lineColors: ['#ccc', '#7a6fbe', '#28bbe3'],
redraw: true,
lineWidth: [1, 1, 1],
pointSize: 1,
parseTime: false
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/raphael/2.1.0/raphael-min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/morris.js/0.5.1/morris.min.js"></script>
<link href="//cdnjs.cloudflare.com/ajax/libs/morris.js/0.5.1/morris.css" rel="stylesheet" />
<div class="panel-body">
<div id="morris-area-charts"></div>
</div>