ASP.NET MVC Chart Helper. Как установить разные цвета для каждого бара / столбца на графике? - PullRequest
9 голосов
/ 06 мая 2011

Я использую помощник диаграммы 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, ни одна из них не помогла

Ответы [ 2 ]

6 голосов
/ 26 мая 2011

Я нашел что-то, что работает ... не очень хорошо, но работает

с использованием старой схемы

с использованием System.Web.UI.DataVisualization.Charting;

<ч />
 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.Charting;» Только элемент управления диаграммой ASP.Net, но с ограниченным доступом.

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

4 голосов
/ 03 ноября 2011

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

Похоже, что реализация System.Web.Helpers.Chart тесно связана с System.Web.UI.DataVisualization.Charting.Chart ,Учитывая это, мне удалось найти некоторые подсказки относительно того, как я могу настроить свойства 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>";

Ключом к этому моменту является определение собственного PaletteCustomColors (у меня только один цвет).Чтобы это работало, свойство Палитра должно быть установлено на Нет .

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

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

Также ознакомьтесь с документацией msdn System.Web.UI.DataVisualization.Charting.Charting.Chart , чтобы узнать о других способах стилизации диаграммы:

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

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