С# GNUPlot 2 графика в одном с явной опцией

Чего я пытаюсь добиться, так это иметь трехмерный график, определяемый функцией, а сверху набор точек, определяемый их координатами. Чтобы нарисовать трехмерный график, я использую опцию pm3d, которую нельзя использовать для рисования отдельных точек, но я обнаружил, что должна быть возможность объединить несколько типов графиков в один, используя «явную» опцию. Итак, я попытался сделать:

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)

как-то?

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


person Lukáš Kielar    schedule 09.11.2015    source источник
comment
Где определен ваш класс GnuPlot? Какую библиотеку вы используете?   -  person Christoph    schedule 09.11.2015
comment
Я использую github.com/AwokeKnowing/GnuplotCSharp.   -  person Lukáš Kielar    schedule 10.11.2015


Ответы (1)


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

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

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

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

GnuPlot.HoldOn();
GnuPlot.SPlot(" x**2 + y**2", "with pm3d");
GnuPlot.SPlot(x, y, z, "with points");
person Christoph    schedule 09.11.2015
comment
Когда я удалил GnuPlot.Unset("surface"); из своего исходного кода, ваше решение заработало отлично. Спасибо. - person Lukáš Kielar; 11.11.2015