Краткий ответ вначале: согласно Примерам MS, прямого способа сделать это не существует, а есть обходной прием: нарисуйте серию на втором графике, чтобы область точно соответствовала вашей существующей позиции в области (выполнив копию вашей серии)наличие невидимой первичной оси X / Y и видимой вторичной оси Y (AxisY2).И установите прозрачность диаграммы chartArea и задних копий скопированных серий.(Это может быть применено к вторичной оси X в случае столбцовых графиков, а не столбцов)
//Suppose you already have a ChartArea with the series plotted and the left Y Axis
//Add a fake Area where the only appearent thing is your secondary Y Axis
ChartArea area1 = chart.ChartAreas.Add("ChartAreaCopy_" + series.Name);
area1.BackColor = Color.Transparent;
area1.BorderColor = Color.Transparent;
area1.Position.FromRectangleF(area.Position.ToRectangleF());
area1.InnerPlotPosition.FromRectangleF(area.InnerPlotPosition.ToRectangleF());
area1.AxisX.MajorGrid.Enabled = false;
area1.AxisX.MajorTickMark.Enabled = false;
area1.AxisX.LabelStyle.Enabled = false;
area1.AxisY.MajorGrid.Enabled = false;
area1.AxisY.MajorTickMark.Enabled = false;
area1.AxisY.LabelStyle.Enabled = false;
area1.AxisY2.Enabled = AxisEnabled.True;
area1.AxisY2.LabelStyle.Enabled = true;
// Create a copy of specified series, and change Y Values to categories
Series seriesCopy = chart.Series.Add(series.Name + "_Copy");
seriesCopy.ChartType = series.ChartType;
foreach(DataPoint point in series.Points)
{
double category = getYourItemCategory(point.XValue);
seriesCopy.Points.AddXY(point.XValue, category);
}
// Hide copied series
seriesCopy.IsVisibleInLegend = false;
seriesCopy.Color = Color.Transparent;
seriesCopy.BorderColor = Color.Transparent;
//Drop it in the chart to make the area show (only the AxisY2 should appear)
seriesCopy.ChartArea = area1.Name;
PS: я провел две ночи без сна, возиться с элементами управления диаграммами MS, пытаясь поставить две разные оси Y наОбласть Диаграммы.Я хотел поставить две по-разному масштабированные серии (одна и та же шкала Х, разные шкалы Y: одна слева для серии А, другая справа для серии В).На самом деле, это оказался настоящий кошмар , когда можно было ожидать, что это будет довольно просто.Правда в том, что Элементы управления MS Chart определенно НЕ приспособлены для этого конкретного случая использования ИМХО.Пример с несколькими осями Y, предложенный в примерах MSCC, представляет собой ужасный и очень уродливый обходной путь, для которого требуется две хартареи поверх стандартной, играющей с видимостью и прозрачностью, для достижения желаемого эффекта (который звучит как очень плохая иллюзия магиитрюк).
В надежде на то, что это будет обогащено и исправлено должным образом в будущих версиях, если вам действительно нужен эффективный способ управления несколькими осями Y, зайдите на ZedGraph