gnuplot - гладкая интерполяция x = f (y)

Я хотел бы построить 2D-график с интерполяцией моих данных csplines с независимой переменной по оси y. Интерполирующая функция должна быть в форме x = f (y). Есть ли способ сделать это без переключения осей?

gnuplot:

set terminal svg size 400,300 enhanced fname 'arial'  fsize 10 butt solid
set output 'out.svg'
set xrange [10:13]
plot "data.txt" using 2:1 notitle #smooth csplines

Данные:

1 11.45294118
2 11.43529412
3 11.18823529
4 10.98235294
5 10.94117647
6 11.28823529
7 11.27058824

person user52610    schedule 27.08.2014    source источник


Ответы (1)


Вы можете использовать table в качестве промежуточного файла и выполнять интерполяцию обычным способом:

set table "data2.txt"
plot "data.txt" using 1:2 notitle smooth csplines
unset table
set xrange [10:13]
plot "data2.txt" using 2:1 w l notitle

введите описание изображения здесь

Если вы хотите более высокое разрешение, вы можете использовать set samples перед нанесением на график в таблицу.

person Miguel    schedule 27.08.2014
comment
На этот раз ты был быстрее :) +1. Да, это единственный рабочий вариант, потому что для csplines данные сначала становятся монотонными по первой координате, что приводит к разным результатам с using 1:2 и using 2:1 (для сравнения, используя smooth bezier, можно напрямую использовать plot "data.txt" using 2:1 smooth bezier, но метод интерполяции как таковой отличается ;) - person Christoph; 27.08.2014