我试图在图表上设置两个Y轴的最小值和最大值,而我得到的全部是0到100。
我已经包含了我的初始化代码和图表填充代码。
我显然不是以正确的方式提出问题,或者我现在已经找到了答案。
我错过了"使用"声明?
谢谢大家
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;
public void initChart()
{
//Set up empty Chart area
chart1.ChartAreas.Add("area");
chart1.ChartAreas["area"].AxisX.LabelStyle.Format = "yyyy-MM-dd HH:mm:ss";
chart1.Series.Add("Heart Rate");
chart1.Series["Heart Rate"].Color = Color.Red;
chart1.Series["Heart Rate"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
chart1.Series.Add("SPo2");
chart1.Series["SPo2"].Color = Color.Blue;
chart1.Series["SPo2"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
}
public void plotHR()
{
double hrValue;
double o2Value;
string xStr;
try
{
chart1.Series["Heart Rate"].Points.Clear();
}
catch
{
// do nothing
}
try
{
chart1.Series["SPo2"].Points.Clear();
}
catch
{
// do nothing
}
chart1.Series["SPo2"].YAxisType = AxisType.Secondary;
chart1.Series["Heart Rate"].YAxisType = AxisType.Primary;
for (int rPtr = 0; rPtr < dgvWorking.RowCount - 1; rPtr ++)
{
hrValue = Convert.ToDouble(dgvWorking.Rows[rPtr].Cells[3].Value);
o2Value = Convert.ToDouble(dgvWorking.Rows[rPtr].Cells[2].Value);
string strTemp = dgvWorking.Rows[rPtr].Cells[0].Value.ToString() + " " + dgvWorking.Rows[rPtr].Cells[1].Value.ToString();
xStr = strTemp.Replace(":", "");
chart1.Series["Heart Rate"].Points.AddXY(strTemp, hrValue);
chart1.Series["SPo2"].Points.AddXY(strTemp, o2Value);
}
//chart1.ChartAreas["area"].RecalculateAxesScale();
//chart1.Series["Heart Rate"].YAxisType = AxisType.Primary;
chart1.ChartAreas["area"].AxisY.Interval = 5.00;
chart1.ChartAreas["area"].AxisY.Minimum = 40.00;
chart1.ChartAreas["area"].AxisY.Maximum = 90.00;
//chart1.Series["SPo2"].YAxisType = AxisType.Secondary;
chart1.ChartAreas["area"].AxisY2.Interval = 5.00;
chart1.ChartAreas["area"].AxisY2.Minimum = 60.00;
chart1.ChartAreas["area"].AxisY2.Maximum = 100.00;
}
答案 0 :(得分:1)
从设计器添加的Chart
控件具有默认ChartArea
和Series
以及Legend
,均已关联。
如果您有多个ChartArea
,例如因为您创建了一个而没有使用chart.ChartAreas.Clear()
清除默认值,因此您添加的任何Series
仍会与第一个ChartArea
相关联。
要将Series s
与您编写的ChartArea ca
相关联:
s.ChartArea = ca.Name;
或您的姓名:
chart1.Series["SPo2"].ChartArea = chart1.ChartAreas["area"].Name
由于您明确打开了新ChartArea
的轴,但仍使用与默认Series
相关联的ChartArea
,因此新轴值未显示..
请注意,在代码Chart
中创建的Chart chart = new Chart();
控件将全部为空,您需要添加其第一个ChartArea
等。
答案 1 :(得分:0)
这可能是原因:Axis.Minimum Property (Remarks)
请注意,如果明确设置此值,则必须考虑数据元素的X值。如果所有数据点的X值均为零,则Chart控件将假设第一个数据点出现在零。此外,如果显式设置了最小值,则将忽略IsStartedFromZero属性。最小值必须小于最大值。