2015-06-21 3 views
2

У меня есть файл данных, который выглядит примерно так:Как построить пересечение двух подгоночных линий в gnuplot?

# Test of 6 
0.1 3.2 
0.4 5.9 
0.7 8.0 
0.9 10.1 


0.1 1.5 
0.4 4.3 
0.7 9.5 
0.9 13.5 

# Test of 10 
0.1 5.5 
0.4 6.3 
0.7 6.9 
0.9 8.5 


0.1 0.5 
0.4 3.3 
0.7 8.5 
0.9 15.5 

# Test of 15 
0.1 12.5 
0.4 13.3 
0.7 13.5 
0.9 15.5 


0.1 1.5 
0.4 7.3 
0.7 15.5 
0.9 16.5 

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

set terminal pngcairo enhanced 
set output 'image.png' 

unset key 

set xrange [0:20] 
set yrange [0:1] 

f(x) = a*x + b 
g(x) = c*x + d 

fit f(x) "data.dat" i 0 u 1:2 via a,b 
fit g(x) "data.dat" i 1 u 1:2 via c,d 
p1 = (d - b)/(a - c) 
fit f(x) "data.dat" i 2 u 1:2 via a,b 
fit g(x) "data.dat" i 3 u 1:2 via c,d 
p2 = (d - b)/(a - c) 
fit f(x) "data.dat" i 4 u 1:2 via a,b 
fit g(x) "data.dat" i 5 u 1:2 via c,d 
p3 = (d - b)/(a - c) 

# what is the real way? 
# set label at 6, p1 "" point pointtype 7 pointsize 2 
# set label at 10, p2 "" point pointtype 7 pointsize 2 
# set label at 15, p3 "" point pointtype 7 pointsize 2 
# plot 1/0 

Я могу использовать метки, чтобы установить точки, в которых я их хочу, но мне бы очень хотелось найти подходящую линию для этих точек. Думаю, я мог бы это сделать, если бы мог лечить (6, p1); (10, р2); (15, p3) в качестве файла данных. Но как мне это сделать или есть более простой способ?

+0

Это является Gnuplot вопрос, не LaTeX! –

+0

да простите. я увидел кучу вопросов gnuplot, поэтому я подумал, что это может сработать здесь. возможно, я должен переместить его в переполнение стека? Могу ли я отметить свой собственный пост? Это не позволит мне отметить, что он будет перемещен в SO ... ну, может быть, кто-то может его переместить. – user1794469

+0

Да, это лучше. Тег 'gnuplot' предназначен для вопросов, как использовать' LaTeX' в gnuplot или как вызвать gnuplot из LaTeX. –

ответ

1

Хорошо, я нашел решение. Gnuplot назвал блоки данных. Вы можете распечатывать и строить данные из блоков данных. Используя данные от вопроса, конечный файл Сюжет:

set terminal pngcairo enhanced 
set output 'image.png' 

unset key 

set xrange [0:20] 
set yrange [0:1] 

f(x) = a*x + b 
g(x) = c*x + d 

fit f(x) "data.dat" i 0 u 1:2 via a,b 
fit g(x) "data.dat" i 1 u 1:2 via c,d 
p1 = (d - b)/(a - c) 
fit f(x) "data.dat" i 2 u 1:2 via a,b 
fit g(x) "data.dat" i 3 u 1:2 via c,d 
p2 = (d - b)/(a - c) 
fit f(x) "data.dat" i 4 u 1:2 via a,b 
fit g(x) "data.dat" i 5 u 1:2 via c,d 
p3 = (d - b)/(a - c) 

set print $points 
print 6,p1 
print 10,p2 
print 15,p3 

fit f(x) $points u 1:2 via a,b 
plot $points w p pt 7 ps 2, f(x) 

Это производит детские так: Ermahgerd, it werks!

+0

Я был бы признателен, если бы вы могли взглянуть на этот вопрос: https://stackoverflow.com/questions/44264824/gnuplot-intersection-of-two-plots –

Смежные вопросы