【问题标题】:ASP.NET chart controls - how do i create this bar chart?ASP.NET 图表控件 - 如何创建此条形图?
【发布时间】:2017-03-17 20:21:14
【问题描述】:

有一个我想从数据表中制作的图表控件。

表格如下所示:

alt text http://www.freeimagehosting.net/uploads/5d02ce1558.png

我想要的图表如下所示:

''' 
''''
'''''       '' '  
'''''       '' '
ECCTMP      ECCTMP       ECCTMP   
Monday      Tuesday      Wednesday

希望这对按类型(电子邮件、电话)分组的每一天有意义。

我现在才确定如何进行数据绑定?

比利

【问题讨论】:

  • 能否详细介绍一下datatable的后端结构?

标签: vb.net charts asp.net-charts


【解决方案1】:

如果您希望在条形图中对系列进行分组,那么您需要使用 Chart.DataBindTable 方法 (MSDN)。

只需添加以下代码:

Chart1.DataBindTable(IEtable, "Day");

这将生成一个类似于以下内容的图表:

这是一些用作测试的虚拟代码:

DataTable table = new DataTable();
table.Columns.Add("Day", typeof(string));
table.Columns.Add("Email", typeof(int));
table.Columns.Add("Calls", typeof(int));
table.Columns.Add("Contacts", typeof(int));
table.Columns.Add("Tasks", typeof(int));
table.Columns.Add("Meetings", typeof(int));
table.Columns.Add("Proposals", typeof(int));

table.Rows.Add("Monday", 1, 3, 3, 4, 5, 5);
table.Rows.Add("Tuesday", 1,6,8,2,0,3);
table.Rows.Add("Wednesday", 7, 6,3,0,2,1);
table.Rows.Add("Thursday", 1,5,5,9,3,1);
table.Rows.Add("Friday", 4,7,3,5,2,3);

//convert datatable to a IEnumerable form
var IEtable = (table as System.ComponentModel.IListSource).GetList();

//Bind the datatable to the chart using the DataBindTable method
Chart1.DataBindTable(IEtable, "Day");

也可以按照您使用 ECCTMP 描述的方式显示标签,但添加图例可能看起来更清晰。

【讨论】:

  • 这段代码看起来很棒,谢谢,迫不及待想试试。我会告诉你我的进展情况!
  • 很高兴听到它对您有用。也可以更改您在问题中所写的标签,使它们显示为“ECCTMP Monday”,但我认为 Legend 对您也同样有效。
  • @Alison,它是柱形图,如果我想要在条形图中相同,那我该怎么做?我尝试了相同的代码,但它抛出错误“图表区域轴 - 图表区域包含不兼容的图表类型。例如,条形图和柱形图不能存在于同一图表区域中。”我相信标记中缺少一些东西。
  • @Rishi:我无法在此处更改/更新答案,但可以发布一个新问题,我可以为您回答。
  • @Alison,感谢您的回复。我已经发布了这个问题。这是链接,stackoverflow.com/questions/15553875/…
【解决方案2】:
protected void Page_Load(object sender, EventArgs e)
    {

        Title tl = new Title("Players Score Card");
        tl.Font = new System.Drawing.Font("vardana",12);
        //chrtGroup.Titles.Add(tl);
        //ChartArea a = new ChartArea("players");
        //a.AxisX.Title = "Player's Yearwise";
        //a.AxisY.Title = "Scores";
        //chrtGroup.ChartAreas.Add(a);


        DataTable dt = new DataTable();
        dt.Columns.Add("Years", typeof(int));
        dt.Columns.Add("Afridi", typeof(int));
        dt.Columns.Add("Akmal", typeof(int));
        dt.Columns.Add("Nasir", typeof(int));
        dt.Columns.Add("Shoib",typeof(int));
        dt.Columns.Add("Hafiz", typeof(int));


        Random rn = new Random();
        for (int i = 1; i < 10; i++)
        {
            DataRow dr = dt.NewRow();
            dr["Years"] = "200" +i;
            dr["Afridi"] = 700 + rn.Next(200,800);
            dr["Akmal"] = 500 + rn.Next(200,800);
            dr["Nasir"] = 400 + rn.Next(200,800);
            dr["Shoib"] = 800 + rn.Next(300,500);
            dr["Hafiz"] = 200 + rn.Next(200, 900);
            dt.Rows.Add(dr);
        }

        Series afridi = new Series("Afridi");
        Series akmal = new Series("Akmal");
        Series nasir = new Series("Nasir");
        Series shoib = new Series("Shoib");
        Series hafiz = new Series("Hafiz");

        afridi.IsValueShownAsLabel = true;
        akmal.IsValueShownAsLabel = true;
        nasir.IsValueShownAsLabel = true;
        shoib.IsValueShownAsLabel = true;
        hafiz.IsValueShownAsLabel = true;

        foreach (DataRow r in dt.Rows)
        {
            afridi.Points.AddXY(Convert.ToDouble(r["Years"]),Convert.ToDouble(r["Afridi"]));
            akmal.Points.AddXY(Convert.ToDouble(r["Years"]), Convert.ToDouble(r["Akmal"]));
            nasir.Points.AddXY(Convert.ToDouble(r["Years"]),Convert.ToDouble(r["Nasir"]));
            shoib.Points.AddXY(Convert.ToDouble(r["Years"]), Convert.ToDouble(r["Shoib"]));
            hafiz.Points.AddXY(Convert.ToDouble(r["Years"]), Convert.ToDouble(r["Hafiz"]));
        }

        chrtGroup.Series.Add(afridi);
        chrtGroup.Series.Add(akmal);
        chrtGroup.Series.Add(nasir);
        chrtGroup.Series.Add(shoib);
        chrtGroup.Series.Add(hafiz);

        chrtGroup.Legends.Add(new Legend("Afridi"));
        chrtGroup.Legends.Add(new Legend("Akmal"));
        chrtGroup.Legends.Add(new Legend("Nasir"));
        chrtGroup.Legends.Add(new Legend("Shoib"));
        chrtGroup.Legends.Add(new Legend("Hafiz"));
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 2015-05-29
    • 1970-01-01
    相关资源
    最近更新 更多