2015-11-09 4 views
1

То, что я пытаюсь достичь, состоит в том, чтобы иметь 3D-график, определенный функцией, а сверху - набор точек, определенных их координатами. Чтобы нарисовать 3D-график, я использую параметр pm3d, который нельзя использовать для рисования отдельных точек, но я обнаружил, что должно быть возможно объединить больше типов графиков в один, используя «явный» вариант. Так что я пытался сделать:C# GNUPlot 2 графы в одном с использованием явного варианта

GnuPlot.Set("pm3d explicit"); 
GnuPlot.Set("isosamples 80"); 
GnuPlot.Set("autoscale"); 
GnuPlot.Unset("surface"); 
GnuPlot.Set("contour base"); 
GnuPlot.SPlot("x**2 + y**2 with pm3d"); 

Но я только получил ошибку:

gnuplot> splot x**2 + y**2 with pm3d with lines 
            ^
     line 0: duplicated or contradicting arguments in plot options 

Где я не знаю, где «с линиями» пришли.

Вторая вещь, которую я не знаю, как объединить множество точек с функцией текста в SPLOT - делать каждый из этих вещей по отдельности легко с

public static void SPlot(double[] x, double[] y, double[] z, string options = "") 
public static void SPlot(string filenameOrFunction, string options = "") 

, но вместе ... есть способ для записи массива точек в виде строки для этой цели или я должен использовать

public static void Plot(List<StoredPlot> storedPlots) 

как-то?

Спасибо за ответы ...

+0

Где ваш класс 'GnuPlot' определен? В какой библиотеке вы используете? – Christoph

+0

Я использую https://github.com/AwokeKnowing/GnuplotCSharp –

ответ

0

Вы должны использовать

GnuPlot.SPlot("x**2 + y**2", "with pm3d"); 

Варианты Plotting должны быть приведены во втором аргументе, в противном случае по умолчанию добавляется, что with lines.

Чтобы построить функцию и множество точек, следующее должно работать:

GnuPlot.HoldOn(); 
GnuPlot.SPlot(" x**2 + y**2", "with pm3d"); 
GnuPlot.SPlot(x, y, z, "with points"); 
+0

Когда я удалил 'GnuPlot.Unset (« поверхность »);' из моего исходного кода ваше решение начало работать отлично. Спасибо. –