2012-06-06 2 views
3

У меня есть файл, который имеет случайные значения от -256 до +256 в файле. Каждая запись находится в новой строке. Я хочу построить этот файл со значениями в файле по оси y. Я не знаю количество записей при выполнении команды plot. Кто-нибудь знает, как это сделать?Построение списка данных в файле с использованием графика GNU

ответ

4

Если я вас правильно понимаю, ваш файл выглядит следующим образом:

100 
-120 
248 
10 
-212 
... 

(я использовал целые числа, но числа с плавающей точкой будет работать просто отлично ... даже номера, как «1.e-5 "ОК) Если это так, то вы можете построить его очень легко:

plot 'datafile.txt' using 1 

рентгеновские значения будут начинаться с 0 и идти до количества строк в файле. См. help datafile using для получения дополнительной информации.

Если вы хотите, чтобы все точки, чтобы иметь то же значение х, вы можете сделать что-то вроде этого:

plot 'datafile.txt' using (0.0):1 

Вы, вероятно, получите предупреждение о нулевом диапазоне на оси х (что ISN» t проблема - gnuplot поступил правильно). Если вы действительно хотите избавиться от предупреждения, установите xrange перед построением графика (или при построении графика)

например.

set xrange [-1:1] 
plot 'datafile.txt' using (0.0):1 

или

plot [x=-1:1] 'datafile.txt' using (0.0):1 

EDIT

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

set terminal png 
set output "waveform-hy1-00000001-20120501-160221.929.raw.png" 
plot 'waveform.txt' with dots # it shouldn't matter, but I always use a using statement just for clarity. 
replot  # <--- a replot after a plot is probably not what you want here. 
set output "delta-hy1-00000001-20120501-160221.929.raw.png" #<-- Nothing will be written to this file... 

A несколько комментариев. Во-первых, вы уверены, что вы сбросите или закройте свой аванс t файл (waveform.txt) и ваш файл сценария (temp) перед построением графика? Если вывод буферизуется, тогда есть приличный шанс, что один из этих файлов пуст, когда gnuplot отправится его читать. Далее, наличие графика и реплики без сброса имени выходного файла не является (как правило) тем, что вы хотите. Что вы пытались достичь с этим? Возможно, вы хотели:

set terminal png 
set output "waveform-hy1-00000001-20120501-160221.929.raw.png" 
plot 'waveform.txt' using 1 with dots 
set output "delta-hy1-00000001-20120501-160221.929.raw.png" 
replot 

Хотя это сгенерирует один и тот же участок в двух разных файлах. Какова цель двух разных файлов? Есть ли еще что вы не показываете? Возможно, если вы введете все содержимое файла temp вместе с описанием того, что вы пытаетесь сделать, мы можем оказать большую помощь. (Кроме того, у вас есть смешанные кавычки в этом скрипте - если вы пишете скрипт в программе на C++, вы должны проверить, чтобы вы правильно избежали ваших кавычек при создании temp).

И наконец, на какой ОС вы работаете? Существует много об использовании gnuplot в окнах, которые у меня нет ...

+0

hi mgilson .. да, это то, что я хочу сделать .. но в основном я видел, как я могу построить, не вдаваясь в среду gnuplot , если я делаю какой-то смысл .. так что в основном wat я сделал, создал файл под названием temp, который имеет следующий: set terminal png set output "waveform-hy1-00000001-20120501-160221.929.raw.png" plot ' Форма волны.TXT»с точками Replot набором выхода„дельта-hy1-00000001-20120501-160221.929.raw.png“ сюжет„delta.txt“с точками Replot то из моих C++ кода я называю это с помощью системного вызова например: система («gnuplot temp»); но это почему-то не работает .. не знаю почему – hRob

+0

@hRob - я редактировал некоторые предложения. Если предложения не работают, я бы посоветовал вам открыть еще один вопрос о StackOverflow. Каждый вопрос должен быть самодостаточным с хорошим описанием проблемы («это по какой-то причине не работает» слишком расплывчато). * Что * не работает. * Что вы ожидали от случившегося и что на самом деле произошло? Часть искусства задавать вопросы здесь заключается в том, чтобы выяснить, где именно проблема (например, это скрипт gnuplot или интерфейс C++?), А затем сделать простой тест, с которым мы можем играть, чтобы надеяться исправить проблему. Удачи. – mgilson