2014-03-25 5 views
1

У меня есть некоторые данные, которые я хотел бы построить в 3d и 2D диаграммах. У меня есть файл данных, который имеет следующую форму:Gnuplot 2D-графика из 3D-данных ввода

1 1 2 
2 1 4 
3 1 6 
4 1 8 

1 2 1 
2 2 2 
3 2 3 
4 2 4 

1 3 4 
2 3 3 
3 3 2 
4 3 1 

1 4 8 
2 4 6 
3 4 4 
4 4 2 

В этом случае первый столбец х, второй является у, а третий является значением. Фактически я использую файл, который имеет 100 отдельных матриц, но я думаю, что этот пример должен быть немного более удобным. :)

Я сделал 3d график с помощью: SPLOT «data.txt» с использованием 1: 2: 3 с линиями

Кроме того, я хотел бы теперь сделать 2D графики в обоих направлениях. Так что-то вроде

plot "data.txt" using 1:3 

с использованием только первая матрица

и

plot "data.txt" using only the first line of 2:3 in every matrix 

Я нашел помощь в 1 в разделе «Как построить часть данных в файле?»

В первом случае

plot "data.txt" every :::1:1 using 1:3 with lines 

, похоже, сделать работу

Но во втором случае я не уверен, как управлять с синтаксисом правильный путь

plot "data.txt" every ::1 using 1:3 with lines 

не будет делать то, что я ожидал. Сюжет фактически либо пуст, либо содержит только один файл данных.

+0

Я думаю, что ваш первый пример неправильный, это должен быть «plot» data.txt «every ::: 0 :: 0 с использованием 1: 3 с линиями», обратите внимание на нули (которые в gnuplot являются первым элементом, а не 1) и дополнительный двоеточие «:» между нулями. Это означает, что «начните строить нулевой блок и закончите с нулем блока». – Miguel

+0

Да, вы правы. Мой плохой и спасибо за этот комментарий! :) – freeone

ответ

0

Ввод help every дает вам рекомендации относительно того, как это сделать. Однако я согласен с тем, что опция every немного неудобна для использования. Это должно сделать это:

plot "data.txt" every ::0::0 using 1:3 with lines 

Это означает, что «элементы графика равны нулю до нуля каждого блока». Элемент zero - это первый элемент в gnuplot.

Чтобы иметь возможность соединить точки линиями, необходимо использовать внешний инструмент, например awk:

plot "<awk -v p=0 'n==p; NF{n++} !NF{n=0}' data.txt" u 1:3 w l 

где p=0 имеет тот же эффект, как every ::0::0. Это решение уже было дано here.

+0

сюжет «data.txt» каждый ::: 0 :: 0 с использованием 1: 3 делает действительно работу, к сожалению, она не соединяет отдельные точки. Я нашел еще одно обсуждение этого вопроса в [link] (https://stackoverflow.com/questions/19792919/gnuplot-using-with-lines-in-combination-with-everycommand). К сожалению, я не мог получить приведенный пример, чтобы запустить его с моим примером ... У вас есть какие-то советы для этого? – freeone

+0

Вы добавили дополнительный двоеточие в начале в своем комментарии выше.Что касается точек соединения с линиями, похоже, нет полного решения gnuplot, см. [This] (http://stackoverflow.com/questions/19792919/gnuplot-using-with-lines-in-combination-with-everycommand). В основном используйте «plot» Miguel

Смежные вопросы