ASP.NET Помощник по диаграмме MVC. Как установить разный цвет для каждой строки / столбца на графике?

#asp.net-mvc-3 #charts

#asp.net-mvc-3 #Диаграммы

Вопрос:

Я использую ASP.NET Помощник по диаграмме MVC 3.0.

По какой-то причине цветовая схема (например Rainfall ) применяется только для круговых диаграмм и диаграмм в виде бублика, а не для любых других типов (столбчатых и т.д.).

Столбцы на всех других диаграммах имеют одинаковый цвет. Как это исправить?

Вот моя диаграмма:

 chart = new System.Web.Helpers.Chart(width: 100, height: 200)
                .AddSeries(
                    chartType: Bar,
                    legend: Rainfall
                    xValue: new[] { "Jan", "Feb", "Mar", "Apr", "May" },
                    yValues: new[] { "20", "20", "40", "10", "10" });
            }
  

Также я пытался использовать все схемы из System.Web.Helpers public static class ChartTheme , ни одна из них не помогла

Ответ №1:

Я нашел кое-что, что работает… это не здорово, но работает

использование старого графика

используя System.Web.UI.DataVisualization.DataVisualization.Построение графиков;


  public ActionResult GetRainfallChart()
    {
        Chart chart = new Chart();
        chart.BackColor = Color.Transparent;
        chart.Width = Unit.Pixel(1400);
        chart.Height = Unit.Pixel(750);

        Series series1 = new Series("Series1");
        series1.ChartArea = "ca1";
        series1.ChartType = SeriesChartType.Bar;
        series1.Font = new System.Drawing.Font("Verdana", 11f, FontStyle.Regular);
        series1.Points.Add(new DataPoint
        {
            AxisLabel = "A",
            YValues = new double[] { 100 },
            Color = Color.Green,
        });
        series1.Points.Add(new DataPoint
        {
            AxisLabel = "B",
            YValues = new double[] { 324 },
            Color = Color.Red,
        });
        series1.Points.Add(new DataPoint
        {
            AxisLabel = "C",
            YValues = new double[] { 235 },
            Color = Color.Yellow,
        });

        chart.Series.Add(series1);

        ChartArea ca1 = new ChartArea("ca1");
        ca1.BackColor = Color.Transparent;
        chart.ChartAreas.Add(ca1);

        var ms = new MemoryStream();

        chart.SaveImage(ms, ChartImageFormat.Png);
        ms.Seek(0, SeekOrigin.Begin);

        return new FileStreamResult(ms, "image/png");



    }
  

Да, он прав. Еще одна информация
Помощник по диаграмме в System.Web.Helpers внутренне использует ‘, используя DV = System.Web.UI.DataVisualization.DataVisualization.Построение графиков;’ ASP.Net только для управления диаграммой, но с ограниченным доступом.

Лучше, если вы можете использовать ASP.Net диаграмма, если вам нужно больше функций

Ответ №2:

Возможно, вы нашли ответ давным-давно, но, учитывая тот факт, что я нашел очень мало по этой теме при поиске способа раскрашивания столбцов диаграммы, я подумал, что может быть полезно опубликовать решение здесь, когда оно откроется мне.

Похоже, что реализация System.Web.Helpers.Диаграмма тесно связана с System.Web.UI.DataVisualization.DataVisualization.Построение графиков.Диаграмма. Учитывая это, мне удалось найти некоторые подсказки относительно того, как я мог бы настроить свойства XML «theme»:

 public const String CHARTS_THEME = @"<Chart BackColor=""#EFEFEF"" BackGradientStyle=""TopBottom"" BorderColor=""#A0A0A0"" BorderWidth=""1"" Palette=""None"" PaletteCustomColors=""#ffcc00"" >
<ChartAreas>
<ChartArea Name=""Default"" _Template_=""All"" BackColor=""Transparent"" BackSecondaryColor=""White"" BorderWidth=""1"" BorderColor=""#A0A0A0"" BorderDashStyle=""Solid"" >
<AxisY>
<MajorGrid Interval=""Auto"" LineColor=""64, 64, 64, 64"" />    
<LabelStyle Font=""Verdana, 10pt"" />
</AxisY>
<AxisX LineColor=""#000000"">
<MajorGrid Interval=""Auto"" LineColor=""64, 64, 64, 64"" />
<LabelStyle Font=""Verdana, 10pt"" />
</AxisX>
</ChartArea>
</ChartAreas>
<Legends>
<Legend _Template_=""All"" BackColor=""Transparent"" Docking=""Bottom"" Font=""Verdana, 10pt, style=Plain"" LegendStyle=""Row"">
</Legend>
    </Legends>                          
</Chart>";
  

Ключевым моментом в этом пункте является определение вашей собственной палитры Customcolors (у меня только один цвет). Чтобы это сработало, свойству Palette должно быть присвоено значение None.

Наконец, просто используйте свою тему при создании экземпляра вашей диаграммы:

 Chart chart = new Chart(width: 600, height: 200, theme:CHARTS_THEME);
  

Также ознакомьтесь с документацией msdn по System.Web.UI.DataVisualization.Построение графиков.Составьте график, чтобы узнать другие способы оформления вашей диаграммы:

http://msdn.microsoft.com/en-us/library/dd467201.aspx