Я пытаюсь визуализировать некоторые данные в соответствии с дизайном на этом рисунке:
Каждый предмет имеет оценку (1-100). Я хочу, чтобы средняя точка указывала, по какому предмету учащийся (средняя точка) преуспевает.
Например: Если учащийся набрал 50 % по предмету 1 и по предмету 2 и 100 % по предмету 3, я хочу, чтобы точка была немного ближе к углу предмета 3 и находилась точно по центру между предметами 1 и 2, как на этом рисунке:
Любые советы о том, как это сделать, или даже точка в правильном направлении, были бы очень признательны!



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Суммируйте баллы по всем предметам, а затем разделите баллы по каждому предмету на общую сумму, чтобы получить коэффициент для каждого. Затем умножьте все предметные баллы на их соответствующие коэффициенты и просуммируйте вместе, чтобы получить центральный балл.
например (не код):
subject1: 50%
subject2: 50%
subject3: 100%
total: 200
subject1 co-eff: 50 / 200 = 0.25
subject2 co-eff: 50 / 200 = 0.25
subject3 co-eff: 100 / 200 = 0.5
centralpoint.x = (point1.x * 0.25) + (point2.x * 0.25) + (point3.x * 0.5)
centralpoint.y = (point1.y * 0.25) + (point2.y * 0.25) + (point3.y * 0.5)
Что вы делаете, так это вычисляете вес для каждого субъекта, где сумма весов равна 1, а затем находите средневзвешенное значение трех баллов. Эта конструкция называется Выпуклая комбинация (спасибо @MattTimmermans за ссылку в комментариях).
Один особый случай - это когда сумма баллов равна нулю, и в этом случае нет действительной точки (поскольку расчеты будут включать деление на ноль). В этом случае вы можете поставить точку точно в центр или просто не отображать точку, на ваше усмотрение.
Небольшим недостатком является то, что ученик с навыками (0%, %0, 100%), например, будет помещен на то же место, что и студент с навыками (0%, 0%, 10%). Но трудно сделать лучше без более подробной информации о пожеланиях ОП (+1)
Это именно то, что я искал! Большое спасибо!
@ Дэмиен Да, это правда. Однако я думаю, что неизбежна ситуация, когда более одного набора оценок будет отображаться в точку, потому что мы отображаем трехмерное пространство в двухмерное. Каждая точка треугольника соответствует линии в пространстве предметных оценок с множеством наборов оценок вдоль линии.
Здесь могут пригодиться барицентрические координаты? Это может быть полезно npmjs.com/package/barycentric