【问题标题】:How to add the different color for each column in the google bar graph如何为谷歌条形图中的每一列添加不同的颜色
【发布时间】:2017-02-18 19:40:32
【问题描述】:

第一阶段:我已经绑定了数据源

private DataTable GetData()
{
    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionStringName"].ConnectionString);
    DataSet dsData = new DataSet();

    try
    {

            string sqlString = "select top 5\n" +
            "         b.name, COUNT(codAmount) as ca\n" +
            "        from consignment as c, Branches as b,\n" +
            "        CODConsignmentDetail_New as cn\n" +
            "        where c.destination = b.BranchCode\n" +
            "        and c.consignmentNumber = cn.consignmentNumber\n" +
            "        and c.consignerAccountNo  = '" + Session["AccountNo"].ToString() + "'\n" +
            "        group by b.name\n" +
            "        order by ca desc";

            SqlCommand SQLCmd = new SqlCommand(sqlString, con);
            SQLCmd.CommandType = CommandType.Text;

            SqlDataAdapter da = new SqlDataAdapter();
            da.SelectCommand = SQLCmd;

            DataTable dt = new DataTable();

            da.Fill(dt);

            con.Close();
            return dt;
        }
        catch
        {
            throw;
        }
}

然后我创建了条形图,但它只为每一列使用一种颜色,即蓝色。

我试图通过数组发送颜色来附加颜色,但它不起作用。

private void BindChart1()
{
        StringBuilder str = new StringBuilder();
        DataTable dt = new DataTable();

        try
        {
            dt = GetData();

            str.Append(@"<script type=*text/javascript*> google.load( *visualization*, *1*, {packages:[*corechart*]});
                       google.setOnLoadCallback(drawChart);
                       function drawChart() {
        var data = new google.visualization.DataTable();
        data.addColumn('string', 'Name');
        data.addColumn('number', 'Consignment Amount');     

        data.addRows(" + dt.Rows.Count + ");");

            string[] colours={ "green","blue","yellow","brown","red"};

            for (int i = 0; i <= dt.Rows.Count - 1; i++)
            {
                str.Append("data.setValue( " + i + "," + 0 + "," + "'" + dt.Rows[i]["name"].ToString() + "');");
                str.Append("data.setValue(" + i + "," + 1 + "," + dt.Rows[i]["ca"].ToString() + ") ;");
                //str.Append(" chart.draw(colors:['"+colours[i].ToString()+"'],");
            }

            str.Append(" var chart = new google.visualization.ColumnChart(document.getElementById('chart_div'));");
            str.Append(" chart.draw(data, {width: 550, height: 300, title: 'COD amount amoungst Cities',");
            str.Append("hAxis: {title: 'Cities', titleTextStyle: {color: 'green'}}");
            str.Append("}); }");
            str.Append("</script>");
            lt.Text = str.ToString().Replace('*', '"');
            lt.Visible = true;
        }
        catch
        { }
    }

我也试过像这样在下面添加颜色功能

  str.Append(" chart.draw(data, {width: 550, height: 300, title: 'COD amount amongst Cities',color:['red','blue','yellow','green','black',]");

但它只使用每行的第一种颜色,例如每行都会有红色。

【问题讨论】:

标签: c# asp.net google-visualization


【解决方案1】:

1.配置选项是复数colors --> colors: ['red', 'blue', 'yellow', 'green', 'black']

但是,此选项将颜色映射到数据中的每个系列

换句话说,如果你只有一栏,你就只有一个系列,
而且只有一种颜色

相同系列/列中设置不同颜色的行,
使用Style Column Role --> {role: 'style'}

请参阅以下工作 sn-p...

google.charts.load('current', {
  callback: function () {
    var data = new google.visualization.arrayToDataTable([
      ['Month', 'Value', {role: 'style'}],
      ['Aug', 3754, 'red'],
      ['Sept', 900, 'blue'],
      ['Oct', 2000, 'yellow'],
      ['Nov', 1700, 'green'],
      ['Dec', 2400, 'black']
    ]);

    var container = document.getElementById('chart_div');
    var chart = new google.visualization.ColumnChart(container);
    chart.draw(data, {legend: 'none'});
  },
  packages: ['corechart']
});
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="chart_div"></div>

2. 使用colors 配置选项,将数据放在单独的列中,
请参阅以下工作 sn-p...

google.charts.load('current', {
  callback: function () {
    var data = new google.visualization.arrayToDataTable([
      ['Label', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
      ['Month', 3754, 900, 2000, 1700, 2400]
    ]);

    var container = document.getElementById('chart_div');
    var chart = new google.visualization.ColumnChart(container);
    chart.draw(data, {
      bar: {
        groupWidth: '90%'
      },
      colors: ['red', 'blue', 'yellow', 'green', 'black']
    });
  },
  packages: ['corechart']
});
<script src="https://www.gstatic.com/charts/loader.js"></script>
<div id="chart_div"></div>

【讨论】:

  • 你说得对,我只有两列,一列用于 x 轴,另一列用于 y 轴
  • 基本上我必须更改来自列的每一行的每个条的颜色,现在怎么可能这样做。
  • 使用'style' 列,参见上面的第一个sn-p。你可以做任何行,任何颜色。但是您必须为样式添加另一列。您还可以使用 DataView 和一个函数来确定颜色。如果您不想在数据中添加列...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多