Я пытаюсь построить две горизонтальные линии в системе координат, используя GNUPlot. Две линии представляют средние значения в двух наборах данных. Каждый набор данных имеет следующие константы: max
, min
и average
. Одна и та же логика должна применяться к обоим наборам данных, поэтому мы можем просто сфокусироваться на одном из них.
На выходе должно быть изображение PNG 800 x 800. Они имеют общую ось X, но их ось Y отличается друг от друга с точки зрения значений диапазонов и единиц измерения. Естественно, что числовые значения двух линий могут меняться произвольно. Точнее, мне нужно построить две линии, скажем, у = 300 и у = 500 в пиксельных координатах, независимо от значения average
.
Насколько я могу судить, нетспособ сказать GNUPlot построить что-то по определенной пиксельной координате. Тем не менее, я считаю, что это возможно косвенно путем корректировки диапазонов до соответствующих значений. После поиска в GNUPlot мне удалось найти правильные значения. Когда заданы правильные значения диапазона, я думаю, что точки данных в наборе должны быть построены так, чтобы они вписывались в график. Теперь мне нужен общий подход для любых ценностей.
У меня есть следующий скрипт GNUPlot с произвольными значениями для двух горизонтальных линий:
set term png size 800, 800
set multiplot layout 1, 1
# Green line
min_green = 0
max_green = 50
set size 1,1
set ytics 20
set yrange [min_green : max_green]
avg_green = 22
plot avg_green linecolor rgb "green"
# Blue line
min_blue = 10
max_blue = 70
set size 1,1
set ytics 20
set yrange [min_blue : max_blue]
avg_blue = 14
plot avg_blue linecolor rgb "blue"
Используйте его так: gnuplot -p script > plot.png
Мне нужны две процедуры, которые выглядят как-токак это:
range_min = get_new_min_range(pixel_target_y, min, max, avg)
range_max = get_new_max_range(pixel_target_y, min, max, avg)
Диапазоны устанавливаются в заданный диапазон в GNUPlot. Зеленая линия должна быть на y = 500
, а синяя линия должна быть на y = 300
(это патаметер pixel_target_y
). Любая помощь с благодарностью!