как отобразить метки оси Y внутри области графика - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть ось времени, и я хочу, чтобы мои метки оси Y были внутри области диаграммы, а не снаружи

вот мой код

        Series newSeries = new Series("hkld");
        newSeries.ChartType = SeriesChartType.Line;
        newSeries.BorderWidth = 2;
        newSeries.Color = Color.OrangeRed;
        newSeries.XValueType = ChartVal

        chart1.ChartAreas[0].AxisY.IsReversed = true;
        chart1.ChartAreas[0].AxisX.MajorGrid.Enabled = true;
        chart1.ChartAreas[0].AxisX.MinorGrid.Enabled = true;
        chart1.ChartAreas[0].AxisX.MajorGrid.LineWidth = 2;
        chart1.ChartAreas[0].AxisX.MajorGrid.LineColor = Color.Gray;
        chart1.ChartAreas[0].AxisX.Minimum = 0;
        chart1.ChartAreas[0].AxisX.Maximum = 1000000; 
        chart1.ChartAreas[0].AxisX.Interval = 200000; //major interval
        chart1.ChartAreas[0].AxisX.MinorGrid.Interval = 20000; //minor interval
        chart1.ChartAreas[0].AxisX.MinorGrid.LineDashStyle = ChartDashStyle.Dot;
        chart1.ChartAreas[0].AxisX.MajorTickMark.Enabled = false;
        chart1.ChartAreas[0].AxisY.MajorTickMark.Enabled = false;
        chart1.ChartAreas[0].AxisY.IntervalType = DateTimeIntervalType.Minutes;
        chart1.ChartAreas[0].AxisY.Interval = 2;
        chart1.ChartAreas[0].AxisY.LabelStyle.Format = "HH:mm:ss";
        chart1.ChartAreas[0].AxisY.MajorGrid.Enabled = true;
        chart1.ChartAreas[0].AxisY.MinorGrid.Enabled = true;
        chart1.ChartAreas[0].AxisY.MajorGrid.LineWidth = 2;
        chart1.ChartAreas[0].AxisY.MajorGrid.LineColor = Color.Gray;
        chart1.ChartAreas[0].AxisY.MinorGrid.IntervalType =               DateTimeIntervalType.Minutes;
        chart1.ChartAreas[0].AxisY.MinorGrid.Interval = 2;
        chart1.ChartAreas[0].AxisY.MinorGrid.LineDashStyle = ChartDashStyle.Dash;
        chart1.ChartAreas[0].BorderColor = Color.Black;
        chart1.ChartAreas[0].BorderWidth = 3;
        chart1.ChartAreas[0].BorderDashStyle = ChartDashStyle.Solid;
        chart1.ChartAreas[0].Position.X = 5;
        chart1.ChartAreas[0].Position.Y = 5;
        chart1.ChartAreas[0].Position.Width = 90;
        chart1.ChartAreas[0].Position.Height = 90;
        chart1.ChartAreas[0].InnerPlotPosition.Height = 100;
        chart1.ChartAreas[0].InnerPlotPosition.Width = 80;
        chart1.ChartAreas[0].InnerPlotPosition.X = 20;
        chart1.ChartAreas[0].Position.Auto = false;

Вот картинкамоего графика:

enter image description here

И вот чего я хочу достичь:

enter image description here

ПРИМЕЧАНИЕ. Моя диаграмма представляет собой диаграмму реального времени, поэтому значение времени будет обновляться и увеличиваться по мере продолжения (динамическая ось)

1 Ответ

0 голосов
/ 24 сентября 2018

Я не думаю, что вы можете перемещать метки, но вы можете перемещать ось вместе с метками.Для этого установите подходящее значение для AxisX.Crossing.

MSDN:

Установка этого свойства для первичной оси будет определять, где другая первичная ось пересекает его, и аналогичным образом установка его для вторичной оси будет определять, где другая вторичная ось пересекаетЭто.Например, установка свойства Crossing первичной оси X определяет, где первичная ось Y будет пересекать ее.

Для свойства Crossing оси можно использовать четыре режима:

  • «Авто», что означает, что значение пересечения будет установлено на минимальное или максимальное значение для соответствующей оси ...

  • «Минимум», что означаетзначение пересечения оси будет его минимальным значением ...

  • «Максимум», что означает, что значением пересечения оси будет его максимальное значение ...

  • Указанное двойное значение, которое находится между минимальным и максимальным значениями для соответствующей оси ...

Это перемещает его в значение xпоследняя точка данных:

Axixs ax = chart1.ChartAreas[0].AxisX;
ax.Crossing = mySeries.Points.Last().XValue;

Вы можете использовать фиксированные значения, если знаете свои данные ..

enter image description here

...