Использование нескольких файлов (txt) для подгонки и построения графика

У меня есть несколько файлов, очень похожих друг на друга, которые я хочу построить и поместить в одну диаграмму. Точнее: несколько кривых с одинаковыми столбцами x:y в каждом файле и использовать только одну подгонку для всех кривых.

Я пытался использовать "< cat", "< awk" (этот я не совсем понял), "< type", но они из довольно старого ответа, и я пробовал их, и они не работали. Вместо этого для сюжета я использовал «<join», но это тоже не сработало. Может быть, они не работают с новейшей версией Gnuplot?

Может быть, попробовать что-то вроде stackoverflow.com/questions/11092608/…?

Marijn 15.05.2023 16:14

Добро пожаловать в StackOverflow! Это слишком мало информации. Сколько файлов, какова ваша функция и параметры установки и т. д.? Что вы искали, что нашли и что именно пробовали? Пожалуйста, покажите свой код. Вы проверили gnuplot help fit или домашнюю страницу gnuplot или StackOverlfow на наличие подходящих примеров?

theozh 15.05.2023 20:11

На самом деле, вы хотите объединить несколько файлов в один набор данных и подогнать эти данные как единое целое (вероятно, это то, что делают эти команды `cat, awk, join') или вы хотите подогнать несколько кривых с одной и той же функцией, но с переменными параметрами? показано на одном графике?

theozh 15.05.2023 20:55

@theozh На самом деле я хочу объединить несколько файлов в один набор данных и подогнать эти данные (но я беспокоюсь, что из-за слишком большого количества информации это не сработает).

fae 16.05.2023 07:34

@fae gnuplot должен обрабатывать большие данные. Насколько велики ваши данные МБ, ГБ? С какой операционной системой вы работаете и какая версия gnuplot?

theozh 16.05.2023 08:44

@theozh У меня сейчас есть 5 файлов разного размера (от 11 до 58 МБ), но в будущем будет добавлено больше. Я работаю с Windows и использую последнюю версию Gnuplot.

fae 16.05.2023 13:12
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
6
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вот независимое от платформы решение (только 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 19.05.2023 16:17

@fae хорошо, я думаю, у Windows возникнут некоторые трудности с обратной косой чертой, одинарными и двойными кавычками. Попробуйте преобразовать все обратные косые черты в форслеши. Если ваш путь содержит пробелы, поместите путь в кавычки.

theozh 19.05.2023 16:39

это сработало, но теперь у меня другая проблема. Я попробовал это со столбцом 1: 2, все было хорошо, но если я изменю столбец (у меня много столбцов, и если я попытаюсь получить exp. 1: 3) в таблице, подогнать и построить его, это даст мне: Чтение 0 баллов "путь....." Нет подходящих данных. Что кажется очень странным.

fae 22.05.2023 11:24

@fae какой у тебя разделитель столбцов? Может быть, запятая или что-то еще? Покажите пример строки данных.

theozh 22.05.2023 11:28

здесь: 7.000000000000000 5.750000000000000 4.969999790191650, очень большой пробел между столбцами, но это всего лишь пробел в конце (я выбираю много десятичных знаков для чисел, потому что это делает его лучше при экспорте из excel в txt с выравниванием столбца)

fae 22.05.2023 11:46

@far для печати в таблицу нужно u 1:3, но при этом получается таблица с двумя столбцами. Значит, для примерки и прорисовки вам понадобится u 1:2. Может в этом и есть "проблема"?

theozh 22.05.2023 12:05

извините, я неправильно выразился. В моих 2 файлах данных есть одинаковое количество столбцов. Вместо того, чтобы использовать столбец 1 и столбец 2, я хочу использовать столбец 1 и столбец 3. Итак, если я изменю строки на: ФАЙЛ u 1: 3 w таблица ..... подходит f (x) $ Data u 1: 3 ......график $Data u 1:3. Разве я не должен получить график с подгонкой и графиком моих столбцов 1 и 3? Или я что-то упускаю?

fae 22.05.2023 12:18

@fae, вот что я пытался сказать: тебе нужно FILE u 1:3 w table, но fit f(x) $Data u 1:2 и plot $Data u 1:2.

theozh 22.05.2023 13:46

Большое спасибо. Я не понимал этого раньше

fae 22.05.2023 15:41

Другие вопросы по теме