Как создать трехмерный точечный график? - PullRequest
4 голосов
/ 24 июня 2011

Я занимался исследованием трехмерных диаграмм рассеяния с помощью C #.До сих пор я нашел библиотеку , которая несколько мне подходит.Однако не обязательно так гибко, как мне нужно.Поскольку все, что мне нужно, - это создать фиксированный трехмерный график рассеяния, есть ли другие альтернативы трехмерному графику с использованием структуры Point3D в C # или любые другие альтернативы, которые не требуют, чтобы я использовал стороннюю библиотеку и которые могли бы позволитьгибкость

Ответы [ 2 ]

3 голосов
/ 23 сентября 2013

Мне удалось создать трехмерную диаграмму рассеяния с ILNumerics :

var colors
  = new[] { Color.Red, Color.Black, Color.Blue, Color.Green /*...*/ };

ILArray<float> data = ILMath.zeros<float>(
  3,
  colors.Length);

ILArray<float> colorData = ILMath.zeros<float>(
  3,
  colors.Length);

int index = 0;
foreach (var p in colors)
{
  data[0, index] = p.GetHue();
  data[1, index] = p.GetSaturation();
  data[2, index] = p.GetBrightness();
  colorData [0, index] = p.R / 255.0f;
  colorData [1, index] = p.G / 255.0f;
  colorData [2, index] = p.B / 255.0f;
  index++;
}

var points = new ILPoints()
{
  Positions = data,
  Colors = colorData 
};

points.Color = null;

var plot = new ILPlotCube(twoDMode: false)
{
  Rotation = Matrix4.Rotation(new Vector3(1, 1, 0.1f), 0.4f),
  Projection = Projection.Orthographic,
  Children = { points }
};

plot.Axes[0].Label.Text = "Hue";
plot.Axes[1].Label.Text = "Saturation";
plot.Axes[2].Label.Text = "Brightness";

this.ilPanel1.Scene = new ILScene { plot };

Довольно прост в освоении и использовании, однако имеет некоторые серьезные проблемы с моей видеокартой (это Intel® Processor Graphics 2000 , поэтому я не виню их ...) - работает только рендер GDI с не очень удивительными характеристиками.

1 голос
/ 05 ноября 2018

Если вам не нужно, чтобы график отображался в вашем приложении на C #, я могу предложить HypnoLog , инструмент с открытым исходным кодом, над которым я работал, который будет отображать график в веб-браузере, действуя какlog output.

Преимущества перед библиотекой ILNumerics, которые были предложены в другом ответе:

  • Это открытый исходный код и бесплатное использование
  • Выполностью гибкий выбор любой библиотеки графиков для браузера
  • Вы можете продолжать использовать свою собственную структуру данных в коде (например, Point3D)

Нет встроенного визуализатора для 3dразбросать график прямо сейчас в HypnoLog, но вы легко можете создать свой собственный визуализатор .Я могу предложить использовать сюжетно 3D Scatter Plots .HypnoLog поможет вам отправить данные из вашего приложения C # на визуализатор, который вы создали в браузере.Смотрите библиотеку HypnoLog-CSharp для удобного использования HypnoLog в C #.

...