Легенда для очков

Я добавляю несколько наборов трехмерных точек в куб графика следующим образом:

points 
|> List.map (fun (z, size, color, label) ->
    let points = new ILPoints(label)
    points.Positions <- positionBuffer z
    points.Size <- float32 size
    points.Color <- new System.Nullable<Color>(color)
    points)
|> List.iter (fun points -> plotcube.Add points)

Это отлично работает, я могу назначить цвет и размер, как мне нравится. Теперь я хотел бы отобразить запись легенды для каждого набора точек. Однако, когда я просто делаю это простым способом

let legend = 
   new ILLegend(points |> List.map (fun (z, size, color, label) -> label) |> List.toArray)
plotcube.Add(legend)

Я получаю пустую легенду. Как я могу заставить его работать? Можно ли вообще добавить легенду для точек на трехмерном графике?

Большое спасибо за любые советы или идеи


person Daniel    schedule 15.09.2014    source источник
comment
Что должна отображать легенда для каждой фигуры ILPoints? Только цвет и размер? (Здесь ожидается, что точечные формы используют одноцветную визуализацию, как в вашем примере)   -  person Haymo Kutschbach    schedule 16.09.2014
comment
Я был бы очень доволен цветом и, конечно же, этикеткой. Я даю метку точкам в конструкторе. Так что в принципе данные должны быть там. Про кастомные легенды читал, но дальше не пошло.   -  person Daniel    schedule 17.09.2014


Ответы (1)


Легенды показывают информацию для объектов, поддерживающих интерфейс IILLegendDataProvider. ILPoints нет. В настоящее время существуют два объекта, которые подходят для совместного использования с ILLegend: ILLinePlot и ILContourPlot. У вас есть несколько вариантов:

  1. Вместо этого используйте ILLinePlot. Вы можете скрыть линию и использовать маркеры только на линейном графике. Это сразу же активирует легенду. Это решение осуществимо только в том случае, если количество точек разумно мало, поскольку рисовать маркеры дорого.

  2. Создайте собственный класс, производный от ILPoints или ILGroup. Реализуйте на нем интерфейс IILLegendDataProvider. Добавьте легенду как брата к вашему классу. Это будет работать только для ILNumerics Ultimate VS, поскольку в Community Edition нет возможности создавать собственные объекты графа сцены.

person Haymo Kutschbach    schedule 18.09.2014