c # Winform MSChart обратная ось Y

Я использую элемент управления MSChart в форме Windows.

Я пытаюсь использовать нисходящую ось Y, используя AxisY.IsReversed = true, но по-прежнему оставляю ось X внизу. По умолчанию, когда я использовал AxisY.IsReversed = true, ось X идет вверх. Затем я попытался настроить AxisY.Crossing = Max, чтобы перевернуть ось до максимального конца оси Y (которая находится внизу), но она не будет опускаться ниже оси X, а только доходит до нее.

Пожалуйста помогите!!!!!


person MinhPham    schedule 09.09.2014    source источник
comment
Вы пробовали chart1.ChartAreas["Default"].AxisY.Crossing = Double.MaxValue; ?   -  person Vojtěch Dohnal    schedule 09.09.2014
comment
@VDOhnal я использую chart1.ChartAreas[0].AxisY.Crossing = 1,7976931348623157E+308D; но он не пойдет ниже оси X, он пойдет только чуть выше нее.   -  person MinhPham    schedule 09.09.2014
comment
Вероятно, есть еще одна проблема, но вам придется опубликовать свой код, который создает диаграмму и оси, иначе трудно сказать.   -  person Vojtěch Dohnal    schedule 09.09.2014
comment
У вас такая же проблема, как здесь experts-exchange.com/Programming /Languages/.NET/Q_27898907.html ?   -  person Vojtěch Dohnal    schedule 09.09.2014
comment
Точно да у меня такая же проблема   -  person MinhPham    schedule 09.09.2014
comment
Хорошо, тогда не нужно публиковать код.   -  person Vojtěch Dohnal    schedule 09.09.2014
comment
есть какое-нибудь решение, чтобы помочь мне? теперь вот так imagizer.imageshack.us/v2/735x395q90/538/QVgyAt. jpg   -  person MinhPham    schedule 09.09.2014


Ответы (2)


Поведение, которое вы описываете, такое же, как показано в демонстрационном проекте Microsoft. Я считаю, что нет настройки, чтобы метки оси X просто отображались под осью X, так как нет ничего похожего на свойство Axis.LabelPosition, которое указывало бы, что метки должны быть под осью.

Либо при указании chart1.ChartAreas[0].AxisX.IsMarksNextToAxis = false; метки появляются сверху диаграммы, а не снизу, как хотелось бы.

Единственная настройка, которую вы можете использовать, это не устанавливать AxisY.IsReversed = true;, а сделать все ваши значения Y *-1 (сделать их отрицательными). Затем используйте LabelStyle.Format для форматирования отрицательных чисел как положительных.

chart1.ChartAreas[0].AxisY.IsReversed = false;               
chart1.ChartAreas[0].AxisY.LabelStyle.Format = "##.##;##.##;##.##";
person Vojtěch Dohnal    schedule 09.09.2014

Есть и другая возможность, если вы не можете или не хотите менять источник данных.

Если ось Y инвертирована, ось X рисуется вверху, а не внизу. Это нельзя изменить, но можно установить для серии диаграмм, что должна использоваться дополнительная ось X.

series.XAxisType = AxisType.Secondary;

Теперь вторичная ось всегда рисуется на противоположной стороне от первичной оси, т.е. в данном случае внизу - и это именно то, что вы хотите в данном случае.

Обратите внимание, что вторичная ось должна быть настроена так же, как и первичная ось (например, установить минимум или максимум).

//Primary
chartArea.AxisX.IsReversed = chartDefinition.XAxis.InvertAxis;
chartArea.AxisX.Minimum = minimum;
chartArea.AxisX.Maximum = maximum;

//Secondary
chartArea.AxisX2.Minimum = minimum;
chartArea.AxisX2.Maximum = maximum;

То же самое относится и к оси Y.

Работал довольно хорошо для меня.

person Markus    schedule 17.03.2020