Я работаю над веб-приложением 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
Как мне настроить точки аннотации на основе одного из значений осей X и Y (а не значения координат)? ⇐ C#
Место общения программистов C#
1720582542
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,
}
}
}
};
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78724589/how-do-i-get-the-annotation-points-to-be-set-based-on-one-of-the-value-of-x-axis[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия