C# Net MVC如何设置图表中每个条形图的颜色?
我正在MVC应用程序中使用System.Web.Helpers 这个应用程序创建了多个图表,经过多次尝试,我终于成功了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:
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)