построение «с импульсами» с использованием нескольких полей из входного файла - PullRequest
1 голос
/ 17 мая 2019

образец "входного файла":

x  y1(red)  y2(blue)  y3(green)
10  0.08      0.02      0.90
15  0.03      0.90      0.07
20  0.85      0.10      0.05

Моя ось x равна 10, 15, 20 или столбцу 1 во входном файле примера. Столбцы 2-4 - мои зависимые переменные, помеченные цветом. Ось X - это расстояние; ось Y - импульсный сигнал.

цель

Мне бы хотелось, чтобы график отображался как "x: y с импульсом" или что-то эквивалентное. Мой вывод будет выглядеть как:

 x =     10   15   20
green   0.90 0.07 0.05
red     0.08 0.03 0.85
blue    0.02 0.90 0.10

При x = 10 я бы увидел зеленую линию с интенсивностью 0,90, перекрытую красную линию с интенсивностью 0,08, за которой следует синий линия с интенсивностью 0,02. Я могу сразу сказать, что для x = 10 мой параметр - 90% зеленого, 8% красного и 2% синего.

Для x = 15 у меня будет синяя линия с интенсивностью 0,90, зеленая линия с интенсивностью 0,07 и красная линия с интенсивностью 0,03.

и аналогичные для х = 20.

Другими словами, моя цель - увидеть, для данного значения x, какой именно процентный вклад вносят мои три зависимые переменные.

проблема

В настоящее время я могу сделать что-то вроде

plot "input file" u 1:4 w i lc rgb "green"
replot "input file" u 1:3 w i lc rgb "blue"
replot "input file" u 1:2 w i lc rgb "red"

К сожалению, самый последний реплот будет перекрывать и перекрывать любые предыдущие сюжеты с меньшим импульсом.

При таком подходе мой сюжет будет выглядеть так:

 x =     10   15   20
green   0.90 ---- ----
red     0.08 0.03 0.85
blue    ---- 0.90 ----

Я бы видел зеленый только при x = 10, а синий только при x = 15. Поскольку красный цвет наносится последним, он перекрывается и покрывает другие цвета из-за большей интенсивности. Я прекрасно вижу красный на всех трех значениях x, но теряю зеленый и синий.

Может быть, есть ли способ сказать реплот, чтобы не затмевать предыдущие сюжеты? Или альтернативный подход к пересадке для достижения цели, указанной выше?

Резюме

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

В моем случае у меня есть от 8 до 40 полей с несколькими сотнями значений x, так что я не могу просто вручную ввести, какие столбцы мне бы хотелось.

Любая помощь очень ценится. Я открыт для любых решений, даже для другого программного обеспечения, если gnuplot не может этого сделать.

1 Ответ

1 голос
/ 17 мая 2019
  set linetype 1 lc "green"
  set linetype 2 lc "red"
  set linetype 3 lc "blue"
  unset key
  set yrange [0:1]
  set style data histogram
  set style histogram cluster gap 3
  set style fill solid

  plot for [col=2:4] 'inputfile' using col:xticlabel(1)

enter image description here

...