2014-09-15 2 views
1

добавить несколько точек 3d устанавливает на участке куба следующим образом:Легенда для точек

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) 

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

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

+0

Какая легенда должна отображаться для каждой формы ILPoints? Только цвет и размер? (Ожидая здесь, точечные формы используют одиночный цветной рендеринг, как в вашем примере) –

+0

Я был бы очень доволен цветом и, конечно же, ярлыком. Я даю метку точкам в конструкторе. Поэтому в принципе данные должны быть там. Я читал о пользовательских легендах, но больше не получал. – Daniel

ответ

1

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

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

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