Asp.net mvc 4 MS图表多个Y轴

Asp.net mvc 4 MS图表多个Y轴,asp.net-mvc-4,mschart,Asp.net Mvc 4,Mschart,是否有一种方法可以为一个图表创建两个Y轴 在同一个图形上添加两个以上的轴似乎是不可能的 有线索吗 非常感谢。您应该从microsoft下载。。。看看 图表功能->轴->多个Y轴 下面是从中提取的代码 using System.Windows.Forms.DataVisualization.Charting; ... if(checkBoxUseMultipleYAxis.Checked) { // Set custom chart area position Chart1.C

是否有一种方法可以为一个图表创建两个Y轴

在同一个图形上添加两个以上的轴似乎是不可能的

有线索吗

非常感谢。

您应该从microsoft下载。。。看看

图表功能->轴->多个Y轴

下面是从中提取的代码

using System.Windows.Forms.DataVisualization.Charting;
...

if(checkBoxUseMultipleYAxis.Checked)
{
    // Set custom chart area position
    Chart1.ChartAreas["Default"].Position = new ElementPosition(25,10,68,85);
    Chart1.ChartAreas["Default"].InnerPlotPosition = new ElementPosition(10,0,90,90);

    // Create extra Y axis for second and third series
    CreateYAxis(Chart1, Chart1.ChartAreas["Default"], Chart1.Series["Series2"], 13, 8);
    CreateYAxis(Chart1, Chart1.ChartAreas["Default"], Chart1.Series["Series3"], 22, 8);
}
else
{
    // Set default chart areas
    Chart1.Series["Series2"].ChartArea = "Default";
    Chart1.Series["Series3"].ChartArea = "Default";

    // Remove newly created series and chart areas
    while(Chart1.Series.Count > 3)
    {
        Chart1.Series.RemoveAt(3);
    }
    while(Chart1.ChartAreas.Count > 1)
    {
        Chart1.ChartAreas.RemoveAt(1);
    }

    // Set default chart area position to Auto
    Chart1.ChartAreas["Default"].Position.Auto = true;
    Chart1.ChartAreas["Default"].InnerPlotPosition.Auto = true;
}

...

/// <summary>
/// Creates Y axis for the specified series.
/// </summary>
/// <param name="chart">Chart control.</param>
/// <param name="area">Original chart area.</param>
/// <param name="series">Series.</param>
/// <param name="axisOffset">New Y axis offset in relative coordinates.</param>
/// <param name="labelsSize">Extra space for new Y axis labels in relative coordinates.</param>
public void CreateYAxis(Chart chart, ChartArea area, Series series, float axisOffset, float labelsSize)
{
    // Create new chart area for original series
    ChartArea areaSeries = chart.ChartAreas.Add("ChartArea_" + series.Name);
    areaSeries.BackColor = Color.Transparent;
    areaSeries.BorderColor = Color.Transparent;
    areaSeries.Position.FromRectangleF(area.Position.ToRectangleF());
    areaSeries.InnerPlotPosition.FromRectangleF(area.InnerPlotPosition.ToRectangleF());
    areaSeries.AxisX.MajorGrid.Enabled = false;
    areaSeries.AxisX.MajorTickMark.Enabled = false;
    areaSeries.AxisX.LabelStyle.Enabled = false;
    areaSeries.AxisY.MajorGrid.Enabled = false;
    areaSeries.AxisY.MajorTickMark.Enabled = false;
    areaSeries.AxisY.LabelStyle.Enabled = false;
    areaSeries.AxisY.IsStartedFromZero = area.AxisY.IsStartedFromZero;

    series.ChartArea = areaSeries.Name;

    // Create new chart area for axis
    ChartArea areaAxis = chart.ChartAreas.Add("AxisY_" + series.ChartArea);
    areaAxis.BackColor = Color.Transparent;
    areaAxis.BorderColor = Color.Transparent;
    areaAxis.Position.FromRectangleF(chart.ChartAreas[series.ChartArea].Position.ToRectangleF());
    areaAxis.InnerPlotPosition.FromRectangleF(chart.ChartAreas[series.ChartArea].InnerPlotPosition.ToRectangleF());

    // Create a copy of specified series
    Series seriesCopy = chart.Series.Add(series.Name + "_Copy");
    seriesCopy.ChartType = series.ChartType;
    foreach(DataPoint point in series.Points)
    {
        seriesCopy.Points.AddXY(point.XValue, point.YValues[0]);
    }

    // Hide copied series
    seriesCopy.IsVisibleInLegend = false;
    seriesCopy.Color = Color.Transparent;
    seriesCopy.BorderColor = Color.Transparent;
    seriesCopy.ChartArea = areaAxis.Name;

    // Disable grid lines & tickmarks
    areaAxis.AxisX.LineWidth = 0;
    areaAxis.AxisX.MajorGrid.Enabled = false;
    areaAxis.AxisX.MajorTickMark.Enabled = false;
    areaAxis.AxisX.LabelStyle.Enabled = false;
    areaAxis.AxisY.MajorGrid.Enabled = false;
    areaAxis.AxisY.IsStartedFromZero = area.AxisY.IsStartedFromZero;

    // Adjust area position
    areaAxis.Position.X -= axisOffset;
    areaAxis.InnerPlotPosition.X += labelsSize;
}
... 
使用System.Windows.Forms.DataVisualization.Charting;
...
如果(复选框UseMultipleyAxis.Checked)
{
//设置自定义图表区位置
图表1.图表区域[“默认”]。位置=新元素位置(25,10,68,85);
Chart1.ChartAreas[“Default”].InnerPlotPosition=新元素位置(10,0,90,90);
//为第二个和第三个系列创建额外的Y轴
CreateYAxis(图表1、图表1.ChartAreas[“默认”]、图表1.Series[“系列2”]、13、8);
CreateYAxis(Chart1、Chart1.ChartAreas[“默认值”]、Chart1.Series[“系列3”]、22、8);
}
其他的
{
//设置默认图表区域
Chart1.Series[“Series2”].ChartArea=“默认值”;
Chart1.Series[“Series3”].ChartArea=“默认值”;
//删除新创建的系列和图表区域
而(Chart1.Series.Count>3)
{
图1.系列。移除(3);
}
而(Chart1.ChartAreas.Count>1)
{
图表1.图表区域。移除(1);
}
//将默认图表区位置设置为自动
Chart1.ChartAreas[“Default”].Position.Auto=true;
Chart1.ChartAreas[“默认值”].InnerPlotPosition.Auto=true;
}
...
/// 
///为指定系列创建Y轴。
/// 
///图表控件。
///原始图表区域。
///系列。
///相对坐标中的新Y轴偏移。
///相对坐标中新Y轴标签的额外空间。
public void CreateYAxis(图表、图表区域、系列、浮动轴偏移、浮动标签大小)
{
//为原始系列创建新图表区域
ChartArea areaSeries=chart.ChartAreas.Add(“ChartArea_u216;”+series.Name);
areaSeries.BackColor=颜色。透明;
areaSeries.BorderColor=颜色.透明;
areaSeries.Position.FromRectangleF(area.Position.ToRectangleF());
areaSeries.InnerPlotPosition.FromRectangleF(area.InnerPlotPosition.ToRectangleF());
areaSeries.AxisX.MajorGrid.Enabled=false;
areaSeries.AxisX.MajorTickMark.Enabled=false;
areaSeries.AxisX.LabelStyle.Enabled=false;
areaSeries.AxisY.MajorGrid.Enabled=false;
areaSeries.AxisY.MajorTickMark.Enabled=false;
areaSeries.AxisY.LabelStyle.Enabled=false;
areaSeries.AxisY.IsStartedFromZero=area.AxisY.IsStartedFromZero;
series.ChartArea=areaSeries.Name;
//为axis创建新图表区域
ChartArea areaAxis=chart.ChartAreas.Add(“AxisY_”+series.ChartArea);
areaAxis.BackColor=颜色。透明;
areaAxis.BorderColor=颜色。透明;
areaAxis.Position.FromRectangleF(chart.ChartAreas[series.ChartArea].Position.ToRectangleF());
areaAxis.InnerPlotPosition.FromRectangleF(chart.ChartAreas[series.ChartArea].InnerPlotPosition.ToRectangleF());
//创建指定系列的副本
seriesCopy=chart.Series.Add(Series.Name+“_Copy”);
seriesCopy.ChartType=series.ChartType;
foreach(系列中的数据点。点)
{
seriesCopy.Points.AddXY(point.XValue,point.yvalue[0]);
}
//隐藏复制的系列
seriesCopy.IsVisibleInLegend=false;
seriesCopy.Color=Color.Transparent;
seriesCopy.BorderColor=Color.Transparent;
seriesCopy.ChartArea=areaAxis.Name;
//禁用网格线和记号
areaAxis.AxisX.LineWidth=0;
areaAxis.AxisX.MajorGrid.Enabled=false;
areaAxis.AxisX.MajorTickMark.Enabled=false;
areaAxis.AxisX.LabelStyle.Enabled=false;
areaAxis.AxisY.MajorGrid.Enabled=false;
areaAxis.AxisY.IsStartedFromZero=area.AxisY.IsStartedFromZero;
//调整区域位置
areaAxis.Position.X-=轴偏移;
areaAxis.InnerPlotPosition.X+=标签大小;
}
... 
这应该会有所帮助,