asp.net положение метки управляющего значения диаграммы

#asp.net #charts

#asp.net #Диаграммы

Вопрос:

Я отображаю данные в asp.net управление диаграммой. Использование 3D-столбчатой диаграммы. Я показываю значения рядом с столбцами. (Количество серий.Значение IsValueShownAsLabel = true;). Элемент управления chart выводит метку значения по-прежнему поверх панели и затрудняет чтение значения. Я пытаюсь расположить эту метку справа, но пока я не нашел способа сделать это. Я также пытался включить смарт-метки в надежде и поместить маркер на панель, чтобы убрать значение, но у меня ничего не получилось. Любые предложения приветствуются.

Пример кода:

 Chart chartSubjects = new Chart();
chartSubjects.Width = Unit.Pixel(800);
chartSubjects.Height = Unit.Pixel(300);
chartSubjects.AntiAliasing = AntiAliasingStyles.All;

Series seriesCount = new Series("subjectsCountSeries");
seriesCount.YValueType = ChartValueType.Int32;
seriesCount.ChartType = SeriesChartType.Bar;
seriesCount.IsValueShownAsLabel = true;
seriesCount.ChartArea = "subjectsCountArea";
chartSubjects.Series.Add(seriesCount);

ChartArea areaCount = new ChartArea("subjectsCountArea");
LabelStyle yAxisStyle = new LabelStyle();
yAxisStyle.ForeColor = System.Drawing.ColorTranslator.FromHtml("#444444");
yAxisStyle.Font = new System.Drawing.Font("Arial", 11, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Pixel);
areaCount.AxisY.LabelStyle = yAxisStyle;
areaCount.AxisY.IsLabelAutoFit = false;
areaCount.Position.Width = 50;
areaCount.Position.Height = 100;
areaCount.Position.X = 0;
areaCount.Position.Y = 0;
areaCount.Area3DStyle.Enable3D = true;
areaCount.Area3DStyle.LightStyle = LightStyle.Realistic;
areaCount.Area3DStyle.WallWidth = 4;
areaCount.Area3DStyle.Inclination = 10;
areaCount.Area3DStyle.Perspective = 10;
areaCount.Area3DStyle.Rotation = 20;
areaCount.Area3DStyle.PointDepth = 90;
chartSubjects.ChartAreas.Add(areaCount);

int[] pointsToAdd = new int[] { 1434, 712, 601, 204, 173, 168, 64, 35, 22, 8, 2 };
foreach (int point in pointsToAdd)
{
    DataPoint dataPoint = new DataPoint();
    dataPoint.SetValueY(point);
    seriesCount.Points.Add(dataPoint);
}
  

введите описание изображения здесь

Комментарии:

1. Опубликуйте некоторый код, который иллюстрирует проблему, с которой вы столкнулись.

2. Количество серий. MarkerColor = система. Рисование. Цвет. Прозрачный; Количество серий. MarkerSize = 16; Количество серий. MarkerStyle = маркерный стиль. Квадрат; Количество серий. Стиль SmartLabelStyle. Минимальное расстояние перемещения = 10; Количество серий. Стиль SmartLabelStyle. AllowOutsidePlotArea = LabelOutsidePlotAreaStyle. Да; Количество серий. Стиль SmartLabelStyle. Включено = true; Количество серий. Стиль SmartLabelStyle. MovingDirection = LabelAlignmentStyles. Верно;

3. Предыдущий код был моей первой попыткой решить проблему. В конце концов я понял, что мне не хватает важного фрагмента кода: seriesCount. Стиль SmartLabelStyle. IsMarkerOverlappingAllowed = false; Это эффективно переместило метку значения вправо во всех, кроме первой строки (отодвинутой влево от прозрачного маркера).

Ответ №1:

Это то, что вы ищете?

 <asp:Series Name="Series1" ChartType="Bar" 
            CustomProperties="BarLabelStyle=Right" IsValueShownAsLabel="True" 
            Palette="EarthTones" XValueMember="xvalue" YValueMembers="yvalue">
</asp:Series>
  

CustomProperties="BarLabelStyle=Right" сделал это для меня.

Ответ №2:

В вашем случае я бы использовал:

 chartSubjects.Series["seriesCount"]["LabelStyle"] = "Right";