C# Net MVC如何设置图表中每个条形图的颜色?

C# Net MVC如何设置图表中每个条形图的颜色?,c#,asp.net-mvc,charts,system.web,C#,Asp.net Mvc,Charts,System.web,我正在MVC应用程序中使用System.Web.Helpers 这个应用程序创建了多个图表,经过多次尝试,我终于成功了 foreach (var m in model[0].HistoryValues) { var chart = new Chart(width: 600, height: 400) .AddTitle(m.LastUpdateSTR) .AddSeries( name: m.LastUpdateSTR, xValue:

我正在MVC应用程序中使用System.Web.Helpers

这个应用程序创建了多个图表,经过多次尝试,我终于成功了

foreach (var m in model[0].HistoryValues)
{

    var chart = new Chart(width: 600, height: 400)
    .AddTitle(m.LastUpdateSTR)
    .AddSeries(
        name: m.LastUpdateSTR,
        xValue: new[] { "Server", "Db", "Tickets" },
        yValues: new[] { m.ServerPerformance, m.Databaseperformance, m.SoldTicketsLastThirtyMin == 0 ? 10 : m.SoldTicketsLastThirtyMin }        
    );

    m.Bytes = chart.GetBytes("jpeg");
};
结果:

问题是,我希望能够改变酒吧的颜色。 像这样:

我没有找到任何关于如何做到这一点的文章。
我找到的这些图片告诉我如何在图表上设置主题,但如何在每个条上设置特定的颜色

图表附带了一组预定义的5个主题。如果需要自定义颜色,可以创建自定义主题。它基本上是这样的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>

现在您可以考虑将XML结构保持在一个真正的XML文件中,并从中读取并使用该XML结构。您需要编写C#代码来读取文件并返回其字符串版本


你也可以考虑类似JavaScript的制图库,它们会让你以更广泛的方式自定义图表。

< P>图表帮助器是MVC,不暴露任何属性,以方便地设置每一个单独的列/字段。因此,您将看到如下所示:

var theme = @"<Chart BackColor="Transparent">
                  <ChartAreas>
                       <ChartArea Name="Default" BackColor=""Transparent"></ChartArea>
                  </ChartAreas>
              </Chart>";

然而,这些主题似乎非常有限,并且可能缺乏能够针对单个酒吧的必要功能(至少很容易)。您可能想考虑另一个库或第三方组件,比如如果您需要这种功能。

根据DOCS,应该是代码>图表。GetBytes(“JPEG”)声明默认值是“代码> JPEG”< /代码>。您使用的是
“jpg”
,这可能会导致问题。很抱歉,我指的是问题。你是对的,我更新了它,可能会和海图一起。遗憾的是,功能不足。谢谢你的帮助。用@Rion Williams answer发泄,这和这个一样。
var chart= new Chart(width: 600, height: 400, theme: MyChartTheme.MyCustom)
var theme = @"<Chart BackColor="Transparent">
                  <ChartAreas>
                       <ChartArea Name="Default" BackColor=""Transparent"></ChartArea>
                  </ChartAreas>
              </Chart>";
var chart = new Chart(width: 600, height: 400, theme: theme)