如何设置饼图切片'颜色吗?asp.net mvc

本文关键字:颜色 mvc net asp 切片 何设置 设置 | 更新日期: 2023-09-27 18:07:44

如何使用图表类设置每个饼状切片的颜色?

从我读到的,我觉得我需要修改我的主题,但我不知道怎么做。

这是我目前所拥有的。

 public ActionResult Q5Chart()
    {
        int strAgr = selected.Where(x => x.q5 == 5).Count();
        int agr = selected.Where(x => x.q5 == 4).Count();
        int neu = selected.Where(x => x.q5 == 3).Count();
        int dis = selected.Where(x => x.q5 == 2).Count();
        int strDis = selected.Where(x => x.q5 == 1).Count();
        string myTheme = @"<Chart>
                                <Series>
                                    <Series Name=""Question 5"" ChartType=""Pie"" CustomProperties=""PieLabelStyle=Disabled"">
                                    </Series>
                                </Series>
                            </Chart>";
        var Q5Chart = new Chart(width: 450, height: 300, theme: myTheme)
        .AddSeries(
        chartType: "Pie",
        name: "Question 5",
        xValue: new[] { "Strongly Agree", "Agree", "Neutral", "Strongly Disagree", "Disagree" },
        yValues: new[] { strAgr,agr,neu,dis,strDis }).AddLegend();

        return File(Q5Chart.ToWebImage().GetBytes(), "image/jpeg");
    }

如何设置饼图切片'颜色吗?asp.net mvc

Chart类允许您使用可用的ChartThemes之一。但是每个主题只会给你预定义的一组颜色。你不能自定义,比如对饼图的特定部分使用不同的颜色。

你可以尝试使用一些javascript图表库,如Chart.js或Highcharts,它们可以让你自定义你想要的颜色。

EDIT:如果你愿意,你可以创建一个自定义主题。它基本上是这样的XML结构的字符串版本。

<Chart BackColor="#D3DFF0" BackGradientStyle="TopBottom" BackSecondaryColor="White" BorderColor="26, 59, 105" BorderlineDashStyle="Solid" BorderWidth="2" Palette="BrightPastel">
  <ChartAreas>
    <ChartArea Name="Default" _Template_="All" BackColor="64, 165, 191, 228" BackGradientStyle="TopBottom" BackSecondaryColor="White" BorderColor="64, 64, 64, 64" BorderDashStyle="Solid" ShadowColor="Transparent" />
  </ChartAreas>
  <Legends>
  <Legend _Template_="All" BackColor="Transparent" Font="Trebuchet MS, 8.25pt, style=Bold" IsTextAutoFit="False" /><BorderSkin SkinStyle="Emboss" />
</Chart>

首先,你可以创建一个类它有这个字符串

public static class MyChartTheme
{
    public const string MyCustom = "<Chart BackColor='"White'" BackGradientStyle='"TopBottom'" BackSecondaryColor='"White'" BorderColor='"26, 59, 105'" BorderlineDashStyle='"Solid'" BorderWidth='"2'" Palette='"BrightPastel'">'r'n    <ChartAreas>'r'n        <ChartArea Name='"Default'" _Template_='"All'" BackColor='"64, 165, 191, 228'" BackGradientStyle='"TopBottom'" BackSecondaryColor='"White'" BorderColor='"64, 64, 64, 64'" BorderDashStyle='"Solid'" ShadowColor='"Transparent'" /> 'r'n    </ChartAreas>'r'n    <Legends>'r'n        <Legend _Template_='"All'" BackColor='"Transparent'" Font='"Trebuchet MS, 8.25pt, style=Bold'" IsTextAutoFit='"False'" /> 'r'n    </Legends>'r'n    <BorderSkin SkinStyle='"Emboss'" /> 'r'n  </Chart>";
}

并使用它

var chart= new Chart(width: 600, height: 400, theme: MyChartTheme.MyCustom)

您可以将xml保存在真正的xml文件中,并让一些c#代码读取该文件的内容并返回该文件的字符串化版本,而不是在类中硬编码大xml字符串。