如何设置饼图切片'颜色吗?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");
}
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字符串。