3D параметрический график в Gnuplot - PullRequest
1 голос
/ 25 января 2012

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

, который можно найти здесь: http://gnuplot.sourceforge.net/demo/surface1.html.

С помощью скрипта здесь:http://gnuplot.sourceforge.net/demo/surface1.17.gnu

Мой график выглядит так:

enter image description here

, и я использую это:

set datafile separator ","
set parametric
x0 = 0 
x1 = 1
x2 = 2
splot 'January5.csv' u x0:1:3 with lines, 'test.csv' u x1:1:2 with lines

Очевидно, мой графикне хватает в сравнении.Мне очень нравится способность первого графика при построении по оси X.Я пытался повторить это, но до сих пор терпел неудачу.

1 Ответ

1 голос
/ 31 января 2012

На самом деле вам не нужно полагаться на parametric, если вы просто хотите построить необработанные данные из файла.

С примерами данных xyz.txt, которые выглядят как шумные синусоидальные временные ряды:

1 0 9.43483356296457
1 0.0204081632653061 10.2281885806631
1 0.0408163265306122 10.9377108185805
...
3 0.959183673469388 10.2733398482972
3 0.979591836734694 10.1662011241681
3 1 10.4628112585751

(Первый столбец представляет собой целые значения, кодирующие местоположения x, 2-й и 3-й столбцы для y и zЯ добавил в конец скрипт R, который использовал для генерации этих данных.)

Я бы просто использовал

splot 'xyz.txt' using 1:2:3 with impulses

, где impulses рисует вертикальные линии от минимума z.Вы можете изменить это поведение;например, если вы хотите начать с z = 0, вы могли бы использовать

set zrange [-1:12]
set ticslevel 0
zmin = 0
zr(x) = (x==0 ? zmin : x)
splot 'xyz.txt' using 1:2:(zr($3)) with impulses

Обратите внимание, что я использовал регулярно расположенные значения для y, но это на самом деле не имеет значения.

enter image description here

Возможны и другие варианты, конечно.Может быть, Заборные участки с какой-нибудь подкладкой или Настенные диаграммы могут помочь вам.


R Используется скриптсгенерировать xyz.dat:

n <- 50  # number of observation per sequence
k <- 3   # number of sequences
t <- seq(0, 1, length=n)  # sampling rate
xyz <- data.frame(x=rep(1:k, each=n), y=t, z=sin(2*pi*t*2.1)+.25*rnorm(n*k)+10)
write.table(xyz, file="xyz.txt", row.names=FALSE, col.names=FALSE)
...