如何使用主题文件自定义ASP.NET图表

时间:2016-07-03 11:08:37

标签: c# xml asp.net-mvc-4 charts mschart

我想创建一个折线图,其中x轴是日期,y轴的位置是绿色(位置0),黄色(1)和红色(2)。

我怎样才能实现这个目标?

目前只有数字。 我尝试使用XML,但我不太了解它,它有点令人困惑。我可以用这个访问y轴的单个元素并将它们转换为文本吗? 我能以某种方式在axisLabel的Chart.AddSeries方法中实现if else方法吗?

控制器

//XML
string t = @"
<Chart> 
  <ChartAreas> 
    <ChartArea Name=""Default"" _Template_=""All""> 
      <AxisY Interval=""1""> 
        <LabelStyle Font=""Verdana, 70px"" /> 
      </AxisY> 
    </ChartArea> 
  </ChartAreas> 
</Chart>";

var Date_min = OpenDate;
var Date_max = DateTime.Today;

var chart = new Chart(width: 300, height: 200, theme: t)
           .AddSeries(
                      chartType: "line",
                      name: "Temperature",
                      markerStep: 2,
                      xValue: Date_X,
                      yValues: Temperature_Y)       //0,1 or 2 for green, yellow and red                     
           .SetXAxis("Date", Date_min.ToOADate(), Date_max.ToOADate())
           .SetYAxis("Temperature", 0, 2.5)
           .GetBytes("png");

提前感谢您的帮助。

更新

我查看了System.Web.UI.DataVisualization.Charting Framework,但没有找到任何其他函数来解决我的问题。

我想更改y轴标签。不是y轴的一般标签,而是它的每个位置。只有三个位置的y轴必须重命名为绿色,黄色和红色而不是0,1,2。 x轴的每个日期都有相应的颜色。

Example

1 个答案:

答案 0 :(得分:0)

使用此主题文件(或字符串)创建自定义轴标签:

if(isEmpty(item_title_text)){
    notifyUserOfEmptyField();
    return;
}

Controller.cs:

<?xml version="1.0" encoding="utf-8" ?> 
 <Chart> 
  <ChartAreas> 
    <ChartArea Name="Default" _Template_="All"> 
      <AxisY>
        <CustomLabels>
          <CustomLabel Text="GREEN (0 - 1)" ToPosition="1" />
          <CustomLabel FromPosition="1" Text="YELLOW (1 - 2)" ToPosition="2" />
          <CustomLabel FromPosition="2" Text="RED (2 - 3)" ToPosition="3" />
        </CustomLabels>
      </AxisY> 
    </ChartArea>
  </ChartAreas>
   <Series>
     <Series Name="Temperature" BorderWidth="3" >
     </Series>
   </Series>
   <Legends>
     <Legend Alignment="Center" Docking="Top" Name="Temperature">
     </Legend>
   </Legends>
 </Chart>

enter image description here