不能对数据点应用标签

本文关键字:应用 标签 数据 不能 | 更新日期: 2023-09-27 18:05:10

在我的Windows窗体应用程序中有一个图表控件,它显示四组不同的数据输入。

到目前为止,图表工作得很好,但最近似乎出现了一些问题,我不知道为什么。

首先,我尝试改变系列类型,以便其中一个系列类型为"FastPoint",另外两个系列类型为"Point"。由于某些原因,尽管在表单的属性框和代码中更改了这一点,但这并没有发生。

这是一个无关紧要的小问题,但问题是,一个系列意味着每个点都标有Y轴和X轴的值,将其放置在图表上。这个工作很好,直到最近,但由于某种原因,标签只是没有出现。下面的代码允许每个点在图形上被标记:

        //so long as textbox is not blank
        if (!((String.IsNullOrEmpty(txtKetAdd.Text)) || String.IsNullOrWhiteSpace(txtKetAdd.Text)))
        {
            int minutesElapsed = StopWatchM.Elapsed.Minutes;   //truncated minutes value for x-axis
            KetAdditions.Add(Convert.ToDouble(txtKetAdd.Text)); //user entered ket dose for y-axis
            chartBP.ChartAreas[0].AxisY2.Title = "Ketamine Dose Added (mg)"; //title for right-hand Y axis (scale for ket dose)
            //with each button click, add last (newest) value on list to y-coordinate on new point in series
            chartBP.Series["Ketamine Additions"].Points.AddXY(minutesElapsed, KetAdditions.Last());
            //label last point in list as it is added to graph
            chartBP.Series["Ketamine Additions"].Points.Last().Label = KetAdditions.Last().ToString() + " (mg)"
                                                                        + minutesElapsed.ToString() + " mins";
            //set data series appearance for when values are added
            //display points and no lines            
            chartBP.Series["Ketamine Additions"].ChartType = SeriesChartType.FastPoint;
            txtKetAdd.Clear();
        }

如果有人能指出问题所在,将不胜感激!

与此图有关的其他代码如下

        //from InitializeComponent()
        //chart area initialised
        //give chart title
        Title BPtitle = new Title();
        BPtitle.Name = "BPvisual";
        BPtitle.Text = "Patient Blood Pressure Visual";
        chartBP.Titles.Add(BPtitle);
        //enable both Y axes
        chartBP.Series[0].YAxisType = AxisType.Primary;
        chartBP.Series[1].YAxisType = AxisType.Secondary;
        //format ketamine series to mould to BP series chart
        chartBP.ChartAreas[0].AxisY2.LineColor = Color.Transparent;
        chartBP.ChartAreas[0].AxisY2.MajorGrid.Enabled = false;
        chartBP.ChartAreas[0].AxisY2.Enabled = AxisEnabled.True;
        chartBP.ChartAreas[0].AxisY2.IsStartedFromZero = chartBP.ChartAreas[0].AxisY.IsStartedFromZero;
        //label chart axis
        chartBP.ChartAreas[0].AxisX.Title = "Time Elapsed (Minutes)";    //title for adjusting bottom axis
        chartBP.ChartAreas[0].AxisY.Title = "Blood Pressure (mmHg)";     //title for left-hand Y axis (scale for blood pressure)
        //set colours for chart lines and Legend
        chartBP.Series["Blood Pressure"].ChartType = SeriesChartType.Line;
        chartBP.Series["Blood Pressure"].Color = Color.Blue;
        chartBP.Series["Ketamine Additions"].ChartType = SeriesChartType.Point;
        chartBP.Series["Ketamine Additions"].Color = Color.Red;
        chartBP.Series["Systolic Pressure"].ChartType = SeriesChartType.FastPoint;
        chartBP.Series["Systolic Pressure"].Color = Color.Orange;
        chartBP.Series["Diastolic Pressure"].ChartType = SeriesChartType.FastPoint;
        chartBP.Series["Diastolic Pressure"].Color = Color.Green;
        //set chart location & dimensions
        chartBP.ChartAreas[0].Position.X = 3;
        chartBP.ChartAreas[0].Position.Y = 7;
        chartBP.ChartAreas[0].Position.Height = 94;
        chartBP.ChartAreas[0].Position.Width = 65;
        chartBP.ChartAreas[0].AxisX.IsStartedFromZero = true;
        chartBP.ChartAreas[0].AxisY.IsStartedFromZero = false;

UpdateChart()函数:updateChart(int minutesElapsed){

        chartBP.Text = "Blood Pressure Visual";
        //Blood Pressure
        //Create correct coordinate using reading and time taken
        chartBP.Series["Blood Pressure"].Points.AddXY(minutesElapsed, BPlist.Last()); //add point to series at these coordinates
        if (BPlist.Last() == BPlist.First()) //if the point added is first in series...
        {
            chartBP.Series["Blood Pressure"].Points.First().Label = "[Op Start]"; //apply Op Start label to point
        }
        //Systolic Pressure
        chartBP.Series["Systolic Pressure"].Points.AddXY(minutesElapsed, SystolList.Last()); //add point to series
        //Diastolic Pressure
        chartBP.Series["Diastolic Pressure"].Points.AddXY(minutesElapsed, DiastolList.Last()); //add point to series
        //specify line graph and colour of line
        //set chart format to connected dots
        //Blood Pressure
        chartBP.Series["Blood Pressure"].ChartType = SeriesChartType.Line;
        if (chartBP.Series["Blood Pressure"].Points.Count > 0) //as long as there is minimum 1 point on chart...
        {
            btnOpEnd.Enabled = true; //reading can be marked as end of operation
        }
    }

不能对数据点应用标签

遍历您感兴趣的系列中的Points,并为点启用IsValueShownAsLabel

foreach (DataPoint dp in series.Points)
{
       dp.IsValueShownAsLabel = true;
}