У меня есть несколько файлов, очень похожих друг на друга, которые я хочу построить и поместить в одну диаграмму. Точнее: несколько кривых с одинаковыми столбцами x:y в каждом файле и использовать только одну подгонку для всех кривых.
Я пытался использовать "< cat", "< awk" (этот я не совсем понял), "< type", но они из довольно старого ответа, и я пробовал их, и они не работали. Вместо этого для сюжета я использовал «<join», но это тоже не сработало. Может быть, они не работают с новейшей версией Gnuplot?
Добро пожаловать в StackOverflow! Это слишком мало информации. Сколько файлов, какова ваша функция и параметры установки и т. д.? Что вы искали, что нашли и что именно пробовали? Пожалуйста, покажите свой код. Вы проверили gnuplot help fit или домашнюю страницу gnuplot или StackOverlfow на наличие подходящих примеров?
На самом деле, вы хотите объединить несколько файлов в один набор данных и подогнать эти данные как единое целое (вероятно, это то, что делают эти команды `cat, awk, join') или вы хотите подогнать несколько кривых с одной и той же функцией, но с переменными параметрами? показано на одном графике?
@theozh На самом деле я хочу объединить несколько файлов в один набор данных и подогнать эти данные (но я беспокоюсь, что из-за слишком большого количества информации это не сработает).
@fae gnuplot должен обрабатывать большие данные. Насколько велики ваши данные МБ, ГБ? С какой операционной системой вы работаете и какая версия gnuplot?
@theozh У меня сейчас есть 5 файлов разного размера (от 11 до 58 МБ), но в будущем будет добавлено больше. Я работаю с Windows и использую последнюю версию Gnuplot.





Вот независимое от платформы решение (только gnuplot).
Вы просто наносите свои файлы в таблицу (блок данных) и подгоняете ее.
Думаю, под Windows тоже будет другое решение с использованием "< type ...". Я не уверен, какое из решений будет лучше для больших данных.
Данные:
SO76254599_1.dat
-4 15.0
-3 8.5
-2 4.5
-1 1.3
SO76254599_2.dat
0 0
1 0.9
2 2.2
3 8.7
SO76254599_3.dat
4 15
5 24
6 37
7 50
Скрипт:
### concatenate datafiles and do a fit
reset session
f(x) = a*x**2 + b*x + c
FILES = "SO76254599_1.dat SO76254599_2.dat SO76254599_3.dat"
set table $Data
plot for [FILE in FILES] FILE u 1:2 w table
unset table
fit f(x) $Data u 1:2 via a,b,c
set key top left
plot $Data u 1:2 w p pt 7 lc "blue", \
f(x) w l lc "red"
### enf of script
Результат:
Final set of parameters Asymptotic Standard Error
======================= ==========================
a = 1.02475 +/- 0.02409 (2.351%)
b = -0.0186563 +/- 0.1031 (552.8%)
c = -0.564311 +/- 0.3619 (64.12%)
Я предполагаю, что ошибки b и c настолько велики, потому что значения близки к нулю.
Добавление:
Если у вас проблемы с подкаталогами или путями в Windows, попробуйте заменить обратную косую черту на косую черту. И если ваш путь содержит пробелы, поместите путь в кавычки. Например:
FILES = "'Test/With Space/SO76254599_1.dat' 'Test/With Space/SO76254599_2.dat' 'Test/With Space/SO76254599_3.dat'"
Привет, это 2 дня, что я пытаюсь. Я проверил, возможно, я сделал ошибку, копируя ваш код или просматривая, выбираю ли я правильный путь к файлу (c:\path1\path2\path3\path4\path5\path6.txt), и также проверил, находится ли txt.file, где в АНСИ. Но каким-то образом, когда я запускаю его, он показывает мне строку, где есть «сюжет для [ФАЙЛ в ФАЙЛАХ] ФАЙЛ u 1: 2 w таблица» ---> предупреждение: не удается найти или открыть файл «C: path1.path2.path3 " ---> предупреждение: не удается найти или открыть файл "path4.path5.path6".......это разбивает мой путь к файлу на 2. Я использую geany для его кодирования, а затем загружаю файл в gnuplot и до тех пор, пока теперь всегда получалось.
@fae хорошо, я думаю, у Windows возникнут некоторые трудности с обратной косой чертой, одинарными и двойными кавычками. Попробуйте преобразовать все обратные косые черты в форслеши. Если ваш путь содержит пробелы, поместите путь в кавычки.
это сработало, но теперь у меня другая проблема. Я попробовал это со столбцом 1: 2, все было хорошо, но если я изменю столбец (у меня много столбцов, и если я попытаюсь получить exp. 1: 3) в таблице, подогнать и построить его, это даст мне: Чтение 0 баллов "путь....." Нет подходящих данных. Что кажется очень странным.
@fae какой у тебя разделитель столбцов? Может быть, запятая или что-то еще? Покажите пример строки данных.
здесь: 7.000000000000000 5.750000000000000 4.969999790191650, очень большой пробел между столбцами, но это всего лишь пробел в конце (я выбираю много десятичных знаков для чисел, потому что это делает его лучше при экспорте из excel в txt с выравниванием столбца)
@far для печати в таблицу нужно u 1:3, но при этом получается таблица с двумя столбцами. Значит, для примерки и прорисовки вам понадобится u 1:2. Может в этом и есть "проблема"?
извините, я неправильно выразился. В моих 2 файлах данных есть одинаковое количество столбцов. Вместо того, чтобы использовать столбец 1 и столбец 2, я хочу использовать столбец 1 и столбец 3. Итак, если я изменю строки на: ФАЙЛ u 1: 3 w таблица ..... подходит f (x) $ Data u 1: 3 ......график $Data u 1:3. Разве я не должен получить график с подгонкой и графиком моих столбцов 1 и 3? Или я что-то упускаю?
@fae, вот что я пытался сказать: тебе нужно FILE u 1:3 w table, но fit f(x) $Data u 1:2 и plot $Data u 1:2.
Большое спасибо. Я не понимал этого раньше
Может быть, попробовать что-то вроде stackoverflow.com/questions/11092608/…?