我是mschart的新手,面临一些问题。我从数据库中读取记录并将其绘制在图表上。问题是:
当我将最大记录值设置为最大y轴值时,仅绘制图表。如果我尝试设置y轴的最大值,如最大值+ 50,我的图表正在绘制错误。这是我的代码:
double y = 0;
foreach (Record record in records)
{
if (y < record.HighValue)
y = record.HighValue;
}
chart.ChartAreas["draw"].AxisY2.Minimum = 0;
chart.ChartAreas["draw"].AxisY2.Maximum = y;
chart.ChartAreas["draw"].AxisY2.Interval = y / 10;
Series s = new Series();
s.Name = seriesName;
s.IsXValueIndexed = true;
s.XValueType = ChartValueType.Date;
s.ChartType = SeriesChartType.Candlestick;
s.Color = Color.Black;
s["OpenCloseStyle"] = "Triangle";
s["ShowOpenClose"] = "Both";
s["PointWidth"] = "1.0";
s["PriceUpColor"] = "Black";
chart.Series.Add(s);
for (int i = 0; i < records.Count; i++)
{
s.Points.AddXY(records[i].CurrentDate, records[i].HighValue);
s.Points[i].YValues[1] = records[i].LowValue;
s.Points[i].YValues[2] = records[i].OpenValue;
s.Points[i].YValues[3] = records[i].CloseValue;
}
图表显示如下:
http://i57.tinypic.com/11ukyyt.png
现在,如果我尝试更改最大y轴值,如:
chart.ChartAreas["draw"].AxisY2.Maximum = y*2;
情节是这样的:
http://i60.tinypic.com/11kzkba.png
现在这是错误的,因为你可以看到系列处于错误的y轴位置
答案 0 :(得分:0)
问题1可能的解决方案: 您的代码并未说明您将系列设置为与辅助Y轴对齐。 您需要添加以下代码行:
s.YAxisType = AxisType.Secondary;
问题2遇到的问题可能与我提出的问题1的解决方案有关,但我在使用mschart对象缩放方面没有太多的第一手经验。请详细说明你的意思是“不缩放”。你的意思是y轴值没有变化吗?或者数据本身没有在视觉上放大?
编辑1 :(根据后续评论) 如果在缩放步骤中自己设置最小,最大或间隔Y轴值,请确保设置AxisY2.Minimum,AxisY2.Maximum,AxisY2.Interval,因为上图中显示的轴是Y2轴,不是Y. Y2轴是图表右侧的轴,AxisX2是显示在图表顶部的x轴。 (通常默认情况下禁用X2和Y2,但是您的图像中有Y2显示值,因此需要将系列绑定到AxisType.Secondary)
编辑2 :(基于关于使用辅助轴进行缩放的搜索) 见链接: How to zoom secondary y axis in mschart