【问题标题】:Incorrect display of Morris Area chart and missing x-axis data莫里斯面积图显示不正确和缺少 x 轴数据
【发布时间】:2019-12-03 20:33:27
【问题描述】:

我想知道是否有人可以为我指明正确的方向。我有一个名为“VwDashBoard_Areachart”的视图查询,其中包含以下五个字段以及来自 MSSQL 服务器的一些信息:

+-----+------+-----+-----+-----+
| ID  | Year | OC  | SS  | ST  |
+-----+------+-----+-----+-----+
|  1  | 2017 |  1  |  1  |  3  |
|  2  | 2018 |  1  |  1  |  2  |
|  3  | 2019 |  1  |  1  |  2  |
+-----+------+-----+-----+-----+

我想在莫里斯面积图中显示数据。我在下面的控制器中有以下代码:

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 轴上没有显示年份。但是,如果我将图表显示为条形图,同样的结果看起来不错。

我想知道我是否忘记在脚本或控制器中包含某些内容,或者是否需要修改视图查询中的数据布局表示才能正确显示面积图。

我尝试输入一些静态数据并且面积图正确显示。问题是当我试图从数据库中获取数据时。任何帮助将不胜感激。

【问题讨论】:

    标签: morris.js


    【解决方案1】:

    您的代码看起来不错。将parseTime 参数设置为false 以避免Morris 解释日期:

    parseTime: false
    

    请根据您的数据尝试以下sn-p:

    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>

    【讨论】:

    • 效果很好!谢谢你的指导。我添加了“parseTime:false”,它解决了这个问题。现在的年份显示在 x 轴上。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-14
    • 2017-04-18
    • 1970-01-01
    • 1970-01-01
    • 2020-02-10
    • 2017-03-06
    相关资源
    最近更新 更多