Как мне настроить точки аннотации на основе одного из значений осей X и Y (а не значения координат)?C#

Место общения программистов C#
Ответить
Anonymous
 Как мне настроить точки аннотации на основе одного из значений осей X и Y (а не значения координат)?

Сообщение Anonymous »

Я работаю над веб-приложением Blazor Project (гибридным). В настоящее время я пытаюсь создать карту статистики с графиком. Чтобы сделать его более приятным, я хотел добавить на график точку аннотации, которая выглядела бы примерно так:
[img]https:// i.sstatic.net/BoQKBgzu.png[/img]

Но в настоящее время эта точка аннотации была достигнута на основе значения координат X=60, Y=35. то, чего я хочу достичь, больше похоже на то, что у меня есть набор дней по оси X с понедельника по воскресенье и набор значений расхода воды по оси Y. Поэтому я создаю функцию, чтобы получить день с самым высоким расходом воды, и хочу установить точку аннотации в этот день. В настоящее время я использую этот метод, чтобы попытаться достичь этого. Однако, несмотря на то, что у меня день с самым высоким расходом воды, я не могу сопоставить это значение со значениями X и Y. Я ищу обучающие материалы в Интернете, но ничего полезного нет, поэтому обращаюсь сюда. Есть ли способ обойти это?






@code {

private List Data { get; set; } = new();

private ApexChartOptions options = new ApexChartOptions();

protected override void OnInitialized()
{
options.Yaxis = [new YAxis { Min=0, Show = false, },];

options.Xaxis = new XAxis
{
Type = XAxisType.Category,

Categories = Data.Select(d =>d.Days).ToList(),

Labels = new XAxisLabels { Show = false },

AxisTicks = new AxisTicks { Show = false},
};

options.Grid = new Grid { Show = false };

options.Tooltip = new Tooltip { Enabled = false };

options.Legend = new Legend
{
Show = false,
};

options.Stroke = new Stroke
{
Curve = Curve.Smooth
};

options.Chart = new Chart
{
Height = "105%",
Width = "110px",
//FontFamily = "Roboto Medium",
ParentHeightOffset = 0,
Toolbar = new Toolbar {Show = false},
Zoom = new Zoom {Enabled = false},
};

options.Colors = new List { "#6C79F4" };

options.Fill = new Fill
{
Type = new List { FillType.Gradient },
Gradient = new FillGradient
{
ShadeIntensity = 0.5,
OpacityFrom = 0.7,
OpacityTo = 0.2,
Type = GradientType.Vertical,

}
};

Data.Add(new WeekData { Days = "Mon", Waterflow = 15 });
Data.Add(new WeekData { Days = "Tue", Waterflow = 10 });
Data.Add(new WeekData { Days = "Wed", Waterflow = 25 });
Data.Add(new WeekData { Days = "Thu", Waterflow = 20 });
Data.Add(new WeekData { Days = "Fri", Waterflow = 35 });
Data.Add(new WeekData { Days = "Sat", Waterflow = 30 });
Data.Add(new WeekData { Days = "Sun", Waterflow = 32 });

SetAnnotationsBasedOnData();

}

public class WeekData
{
public string Days { get; set; }

public int Waterflow { get; set; }
}

private void SetAnnotationsBasedOnData()
{
var maxDataPoint = Data.OrderByDescending(d => d.Waterflow).First();

Console.WriteLine($"Setting annotation at X: {maxDataPoint.Days}, Y: {maxDataPoint.Waterflow}");

options.Annotations = new Annotations
{
Points = new List
{
new AnnotationsPoint
{
//X = maxDataPoint.Days, I want to use this instead
//Y = maxDataPoint.Waterflow, and this

X = 60, //this is the current method being used to achieve the image
Y = 35, //this is the current method being used to achieve the image

Label = new Label
{
Text = $"↗ {maxDataPoint.Waterflow}%",
BorderColor = "transparent",
Style = new Style
{
Background = "transparent",
Color = "#6C79F4",
FontFamily = "Roboto Medium",
}
},
Marker = new AnnotationMarker
{
FillColor = "#6C79F4",
StrokeColor = "white",
Size = 5,
}
}

}
};

}
}


Подробнее здесь: https://stackoverflow.com/questions/787 ... -of-x-axis
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»