技术图文:如何利用 C#+Echarts 绘制 Smoothed Line Chart?

背景

这几天在做一个电力系统的软件,其中需要绘制 Bar Simple,解决这个问题之后,我写了第一篇关于 C# 封装 Echarts 的图文:

该图文详细介绍了 C#Echarts 封装为自定义控件的过程,封装了 EchartsxAxisyAxisseriesoption 结构。

Simple Bar

之后,这个软件系统需要绘制 “堆叠条形图”,解决这个问题之后,我又写了第二篇关于 C# 封装 Echarts 的图文:

该图文对前面的代码进行了扩展,增加了对 tooltiplegendgrid 等结构的封装。

堆叠条形图

今天,总结的是如何通过离散点拟合一条光滑的函数曲线。

Smoothed Line Chart

技术分析

首先,我们对比一下百度提供的 “Bar Simple” 和 “Smoothed Line Chart” 示例代码

<u>Bar Simple 的代码</u>

option = {
    xAxis: {
        type: 'category',
        data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
    },
    yAxis: {
        type: 'value'
    },
    series: [{
        data: [120, 200, 150, 80, 70, 110, 130],
        type: 'bar'
    }]
};

<u>Smoothed Line Chart 的代码</u>

option = {
    xAxis: {
        type: 'category',
        data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
    },
    yAxis: {
        type: 'value'
    },
    series: [{
        data: [820, 932, 901, 934, 1290, 1330, 1320],
        type: 'line',
        smooth: true
    }]
};

通过两段代码的对比,会发现主要的区别在 series 属性上。

柱状图 type:'bar',折线图 type:'line',如果想使其光滑则需要设置 smooth:true

由于我们已经封装了 EchartsxAxisyAxisseries 属性,这里只需要扩展一下 SeriesItem 结构就能满足需求。


代码实现

扩展 SeriesItem 结构:

public class SeriesItem
{
    /// <summary>
    /// 每个系列通过 type 决定自己的图表类型。
    /// </summary>
    public string type { get; set; } = "line";

    /// <summary>
    /// 是否平滑曲线显示。
    /// </summary>
    public bool smooth { get; set; } = false;

    /// <summary>
    /// 系列中的数据内容数组
    /// </summary>
    public List<double> data { get; set; }
}

总结

扩展之后,我们针对以上例子的客户端代码如下:

<u>加载 x 轴的数据</u>

private List<object> GetXAxisData()
{
    List<object> reslt = new List<object>
    {
        "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"
    };
    return reslt;
}

<u>加载需要显示的数据</u>

private List<SeriesItem> GetSeriesData()
{
    List<SeriesItem> result = new List<SeriesItem>();

    SeriesItem item = new SeriesItem
    {
        type = "line",
        data = new List<double>
        {
            820, 932, 901, 934, 1290, 1330, 1320
        },
        smooth = true,
    };
    result.Add(item);
    return result;
}

<u>配置 Echartsoption 属性绘制光滑曲线</u>

private void Form1_Load(object sender, EventArgs e)
{
    Option option = new Option
    {
        xAxis = new XAxis
        {
            type = "category",
            data = GetXAxisData()
        },
        yAxis = new YAxis
        {
            type = "value",
        },
        series = GetSeriesData()
    };
    echarts1.InitialECharts(option);
}

运行结果如下:

运行结果

我们再来看一下扩展代码之后的具体应用。

光滑曲线

好了,今天就到这里吧!希望咱们一起学习的知识对大家有用!See You!

目前 LSGO软件技术团队 正在招新,对我们感兴趣的同学可以参看这篇图文:如何加入 LSGO 软件技术团队?,通过对 Huffman Code 的解码可以得到我的微信号,欢迎与我联系,成为团队的一员。


相关图文

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,047评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,807评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,501评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,839评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,951评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,117评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,188评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,929评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,372评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,679评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,837评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,536评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,168评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,886评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,129评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,665评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,739评论 2 351

推荐阅读更多精彩内容