Gnuplot - Как мне построить один столбец данных в назначенном xtics? - PullRequest
0 голосов
/ 09 октября 2019

У меня есть один столбец данных (ось Y), где каждый из 4 рядов соответствует температуре (ось X). Я могу использовать xtics от 0-3 для четырех температур, но метки xtic представляют температуры с неравномерными интервалами. Я хочу нанести каждый ряд данных на заданную точку, чтобы интервалы отражали интервал температур. Это возможно?

Используя следующие инструкции

set xrange [0:3]
set xtics ("253" 0, "294" 1, "310" 2, "350" 3)

Я получаю свои четыре ряда, построенные при четырех температурах, но значения x равномерно распределены на 1 тик. Я бы предпочел, чтобы мои данные были разнесены по тем же значениям xtic, что и температура.

Я думал, что смогу использовать

set xtics ("253" 253, "294" 294, "310" 310, "350" 350)

, но данные все еще отображаются на тиках 0-3.

Могу ли я использовать что-то вроде

plot "file.dat" using 1:xtics(253,294,310,350)

Это не работает, но это просто идея. Заранее благодарю за любой вклад и помощь!

Ответы [ 2 ]

1 голос
/ 09 октября 2019

Обычно нужно поместить температуры в отдельный столбец и использовать этот столбец для координаты x. Но если вы действительно хотите вставить значения температуры только внутри сценария построения, я предлагаю:

array temperature[4] = [253,294,310,350]
plot "file.dat" using (temperature[$0+1]):1 

Обратите внимание, что номера строк начинаются с 0-3, а индексы массива - от 1-4.

Если ваш gnuplot слишком стар для поддержки массивов, вы все равно можете использовать вместо него строку из нескольких слов. Предупреждение: этот синтаксис действительно ужасен!

temperature = "253 294 310 350"
plot "file.dat" using (word(temperature,int(column(0))+1)+0.0):1
0 голосов
/ 09 октября 2019

Другой («некрасивый») обходной путь: если у вас всего 4 строки, вы можете сделать следующее. Работает также с gnuplot 4.0.

myTic(n) = n==0 ? 253 : n==1 ? 294 : n==2 ? 310 : n==3 ? 350 : NaN

plot 'file.dat' u (myTic($0)):1
...