Как добавить другой цвет столбца в элементе управления диаграммы в asp.net - PullRequest
1 голос
/ 15 декабря 2011

Я делаю кодирование Управление диаграммой ASP.NET и код диаграммы, как указано ниже

<asp:Chart ID="Chart1" runat="server" Width="450px" Height="200px" BackColor="211, 223, 240"
                Palette="None" BorderLineStyle="Solid" BackGradientEndColor="White" BackGradientType="TopBottom"
                BorderlineWidth="2" BorderlineColor="26, 59, 105" EnableViewState="True">
                <Series>
                    <asp:Series Name="Series1" BorderColor="180, 26, 59, 105" Color="Blue" BorderWidth="2"
                        ShadowColor="254, 0, 0, 0" ChartType="Column" ShadowOffset="1" MarkerSize="8" MarkerStyle="Diamond">
                        <EmptyPointStyle BackGradientStyle="Center" />
                    </asp:Series>                         
                <ChartAreas>
                    <asp:ChartArea Name="ChartArea" BorderColor="64, 64, 64, 64" BorderDashStyle="Solid"
                        BackSecondaryColor="White" BackColor="64, 165, 191, 228" ShadowColor="Transparent"
                        BackGradientStyle="TopBottom">
                        <AxisY LineColor="#eb9c28">
                            <MajorGrid LineColor="64, 64, 64, 64"></MajorGrid>
                        </AxisY>
                        <AxisX LineColor="64, 64, 64, 64" TextOrientation="Horizontal" IsStartedFromZero="true">
                            <LabelStyle Format="dd/MM/yyyy" IntervalType="Days" Interval="1"></LabelStyle>
                            <MajorGrid LineColor="64, 64, 64, 64"></MajorGrid>
                        </AxisX>
                    </asp:ChartArea>
                </ChartAreas>
                <BorderSkin SkinStyle="Emboss" />
            </asp:Chart>

и я связал этот элемент управления диаграммы с кодом позади , как указано ниже

    Chart1.DataSource = dt;
    Chart1.Series["Series1"].XValueMember = "UTC";
    Chart1.Series["Series1"].YValueMembers = "Value";           

    Chart1.ChartAreas[0].AxisX.IntervalType = DateTimeIntervalType.Minutes;
    Chart1.ChartAreas[0].AxisX.Interval = 5;
    Chart1.ChartAreas[0].AxisX.LabelStyle.Format = "HH:mm:ss"; 

Теперь в dt (источник данных) есть также 3-й столбец с именем Серьезность , и значения будут "a", "b", "c" ...

Теперь я хотел бы настроить цвет столбца в соответствии с этим значением, значит

если -> красный

b -> синий

c -> зеленый как этот

Пожалуйста, помогите мне, если кто-то сделал такую ​​логику.

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 15 декабря 2011

Вы можете установить несколько значений для элемента Y, установив значение для

Chart1.Series[0].YValuesPerPoint = 2;

Теперь для столбца будет использоваться только одно значение, но в другом столбце вы можете связать значение, соответствующее a, b, c, как, скажем, 1,2,3, и теперь привязать это к серии.

 Chart1.Series["Series1"].YValueMembers = "Value,intvalueforcolor";

Чтобы применить цвета, вам придется пройтись по точкам в серии, как

foreach (DataPoint pt in Chart1.Series[0].Points)
{
     pt.YValues[1] // this will be your value depending upon which you could set the color
     //pt.Color = ...
}
0 голосов
/ 29 апреля 2015

.cs код

public void DuesChartLoad()
{
    string prjid = Request.QueryString[0].ToString();
    DataSet ds = objbug.GetBugDetails(prjid);

    ViewState["Dues"] = ds;
    DateTime now = DateTime.Now;

    DataTable dt = ds.Tables[0];

    string[] x = new string[dt.Rows.Count];
    int[] y = new int[dt.Rows.Count];
    for (int i = 0; i < dt.Rows.Count; i++)
    {
        x[i] = dt.Rows[i][0].ToString();
        y[i] = Convert.ToInt32(dt.Rows[i][1]);

    }

     DuesChart.Series[0].Points.DataBindXY(x, y);
     DuesChart.Series[0].Points.DataBindXY(x, y);
   //  DuesChart.Series[0].Color=System.Drawing.Color.Red;


     DuesChart.Series[0].BorderWidth = 10;
    DuesChart.Series[0].Points.DataBindXY(x,y);
    #region cannot working
    //Color[] colors = new Color[] { Color.Red, Color.Green, Color.Wheat, Color.Gray, Color.AliceBlue,Color.Pink,Color.Black,Color.Beige };
    //foreach (Series series in DuesChart.Series)
    //{
    //    foreach (DataPoint point in series.Points)
    //    {
    //        //Set color for the bar
    //        point.LabelBackColor = colors[series.Points.IndexOf(point)];
    //    }
    //}

# endregion Series sr = new Series ();sr.Name = "A";sr.Points.DataBindXY (x, y);sr.ChartType = SeriesChartType.StackedBar;sr.Font = new System.Drawing.Font ("Tahoma", 8, System.Drawing.FontStyle.Bold);

    for (int i = 0; i < x.Length; i++) //xValues.Lenght = 4 in this case where you have 4 Data number
    {
        if (i == 0) // Don't forget xValues[0] is Data4 in your case
            DuesChart.Series[0].Points[i].Color = Color.Blue;
        if (i == 1)
            DuesChart.Series[0].Points[i].Color = Color.Yellow;
        if (i == 2)
            DuesChart.Series[0].Points[i].Color = Color.Violet;
        if (i == 3)
            DuesChart.Series[0].Points[i].Color = Color.SkyBlue;
        if (i == 4)
            DuesChart.Series[0].Points[i].Color = Color.Orange;
        if (i == 5)
            DuesChart.Series[0].Points[i].Color = Color.Green;
        if (i == 6)
            DuesChart.Series[0].Points[i].Color = Color.Pink;
        if (i == 7)
            DuesChart.Series[0].Points[i].Color = Color.Purple;
    }


}
  • Элемент списка
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...